Issue Details
- Number
- 22592
- Title
- LeakSanitizer detects memory leak if CDBWrapper ctor fails
- Description
- While running the functional tests under LSAN and 8 parallel jobs, `CDBWrapper` ctor would regularly throw via `HandleError` because of low disk space. This would make LSAN error because the destructor for `CDBWrapper` was never called and so the `options.block_cache` and some other parameters wouldn't be destructed.
LSAN output (I deleted the file, but managed to take a picture of it, so log is kind of truncated):
```
==1204791==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 3520 byte(s) in 1 object(s) allocated from:
#0 0x55f632912679 in operator new(unsigned long)
#1 0x55f6342936d6 in leveldb::NewLRUCache(unsigned long)
#2 0x55f6335f66f8 in GetOptions(unsigned long)
#3 0x55f6335f4ec7 in CDBWrapper::CDBWrapper(boost::filesystem::path const&, unsigned long, bool, bool, bool)
#4 0x55f6332e32cf in std::_MakeUniq<CDBWrapper>::__single_object std::make_unique<CoinsViews ...truncated...
#5 0x55f6332d2781 in CCoinsViewDB::CCoinsViewDB(boost::filesystem::path, unsigned long, bool, bool)
#6 0x55f6333ec6e2 in CoinsViews::CoinsViews(std::__cxx11::basic_string<char, std::char_traits<char>, ...truncated...
#7 0x55f63346a111 in std::_MakeUniq<CoinsViews>::__single_object std::make_unique<CoinsViews, ...truncated...
#8 0x55f6333ed379 in CChainState::InitCoinsDB(unsigned long, bool, bool, std::__cxx11::basic_string ...truncated...
#9 0x55f6329699e0 in AppInitMain(NodeContext&, interfaces::BlockAndHeaderTipInfo*)
#10 0x55f63291868e in AppInit(NodeContext&, int, char**)
#11 0x55f632915e2f in main
#12 0x7f86b6f7fb24 in __libc_start_main
```
- URL
-
https://github.com/bitcoin/bitcoin/issue/22592
- Closed by
-
Back to List