shutdown: Stop threads before resetting ptrs
This commit is contained in:
1 file changed
+7
-5
+7
-5
@@ -209,11 +209,7 @@ void Shutdown()
|
||||
// using the other before destroying them.
|
||||
if (peerLogic) UnregisterValidationInterface(peerLogic.get());
|
||||
if (g_connman) g_connman->Stop();
|
||||
peerLogic.reset();
|
||||
g_connman.reset();
|
||||
if (g_txindex) {
|
||||
g_txindex.reset();
|
||||
}
|
||||
if (g_txindex) g_txindex->Stop();
|
||||
|
||||
StopTorControl();
|
||||
|
||||
@@ -222,6 +218,12 @@ void Shutdown()
|
||||
threadGroup.interrupt_all();
|
||||
threadGroup.join_all();
|
||||
|
||||
// After the threads that potentially access these pointers have been stopped,
|
||||
// destruct and reset all to nullptr.
|
||||
peerLogic.reset();
|
||||
g_connman.reset();
|
||||
g_txindex.reset();
|
||||
|
||||
if (g_is_mempool_loaded && gArgs.GetArg("-persistmempool", DEFAULT_PERSIST_MEMPOOL)) {
|
||||
DumpMempool();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user