diff options
| author | João Barbosa <[email protected]> | 2019-02-01 21:09:13 +0000 |
|---|---|---|
| committer | João Barbosa <[email protected]> | 2019-02-01 21:13:08 +0000 |
| commit | 712d35bc563ac7de0b7dfc3a35fc48dc6448fa6a (patch) | |
| tree | d7d4bdadfc9a51446178bab706f26201e48cc2a7 /src/wallet/db.cpp | |
| parent | Merge #11911: Free BerkeleyEnvironment instances when not in use (diff) | |
| download | discoin-712d35bc563ac7de0b7dfc3a35fc48dc6448fa6a.tar.xz discoin-712d35bc563ac7de0b7dfc3a35fc48dc6448fa6a.zip | |
wallet: Add missing cs_db lock
Without this lock BerkeleyEnvironment::~BerkeleyEnvironment and
GetWalletEnv would race for g_dbenvs. This wasn't detected before
because thread safety analysis does not check constructors and
destructors.
Diffstat (limited to 'src/wallet/db.cpp')
| -rw-r--r-- | src/wallet/db.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp index ae4055326..cfa9bdd20 100644 --- a/src/wallet/db.cpp +++ b/src/wallet/db.cpp @@ -147,6 +147,7 @@ BerkeleyEnvironment::BerkeleyEnvironment(const fs::path& dir_path) : strPath(dir BerkeleyEnvironment::~BerkeleyEnvironment() { + LOCK(cs_db); g_dbenvs.erase(strPath); Close(); } |