diff options
author | MarcoFalke <falke.marco@gmail.com> | 2020-04-12 20:22:38 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2020-04-15 11:46:24 -0400 |
commit | fa176e253fb473767c61d4d8cd2d93e87d71a015 (patch) | |
tree | e204ffd3fb7942d276afdd1f915180cc395498de /src | |
parent | a2b282c9d05843e5729e1a597ab764d912a6343e (diff) |
test: Avoid accessing free'd memory in validation_chainstatemanager_tests
Diffstat (limited to 'src')
-rw-r--r-- | src/test/txindex_tests.cpp | 8 | ||||
-rw-r--r-- | src/test/validation_chainstatemanager_tests.cpp | 9 |
2 files changed, 8 insertions, 9 deletions
diff --git a/src/test/txindex_tests.cpp b/src/test/txindex_tests.cpp index 3550a02316..721e3498e6 100644 --- a/src/test/txindex_tests.cpp +++ b/src/test/txindex_tests.cpp @@ -70,12 +70,8 @@ BOOST_FIXTURE_TEST_CASE(txindex_initial_sync, TestChain100Setup) // shutdown sequence (c.f. Shutdown() in init.cpp) txindex.Stop(); - // txindex job may be scheduled, so stop scheduler before destructing - m_node.scheduler->stop(); - threadGroup.interrupt_all(); - threadGroup.join_all(); - - // Rest of shutdown sequence and destructors happen in ~TestingSetup() + // Let scheduler events finish running to avoid accessing any memory related to txindex after it is destructed + SyncWithValidationInterfaceQueue(); } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/validation_chainstatemanager_tests.cpp b/src/test/validation_chainstatemanager_tests.cpp index 6e7186db22..e79ae1f4d5 100644 --- a/src/test/validation_chainstatemanager_tests.cpp +++ b/src/test/validation_chainstatemanager_tests.cpp @@ -3,12 +3,13 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. // #include <chainparams.h> -#include <random.h> -#include <uint256.h> #include <consensus/validation.h> +#include <random.h> #include <sync.h> #include <test/util/setup_common.h> +#include <uint256.h> #include <validation.h> +#include <validationinterface.h> #include <vector> @@ -97,7 +98,9 @@ BOOST_AUTO_TEST_CASE(chainstatemanager) exp_tip = c1.m_chain.Tip(); BOOST_CHECK_EQUAL(validated_tip, exp_tip); - // Avoid triggering the address sanitizer. + // Let scheduler events finish running to avoid accessing memory that is going to be unloaded + SyncWithValidationInterfaceQueue(); + WITH_LOCK(::cs_main, manager.Unload()); } |