aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-04-12 20:22:38 -0400
committerMarcoFalke <falke.marco@gmail.com>2020-04-15 11:46:24 -0400
commitfa176e253fb473767c61d4d8cd2d93e87d71a015 (patch)
treee204ffd3fb7942d276afdd1f915180cc395498de /src
parenta2b282c9d05843e5729e1a597ab764d912a6343e (diff)
test: Avoid accessing free'd memory in validation_chainstatemanager_tests
Diffstat (limited to 'src')
-rw-r--r--src/test/txindex_tests.cpp8
-rw-r--r--src/test/validation_chainstatemanager_tests.cpp9
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());
}