Merge #18615: test: Avoid accessing free'd memory in validation_chainstatemanager_tests
fa176e253f
test: Avoid accessing free'd memory in validation_chainstatemanager_tests (MarcoFalke) Pull request description: ACKs for top commit: ryanofsky: Code review ACKfa176e253f
, though if you have to update this again, would suggest separating txindex test cleanup and the chainstatemanager test fix in separate commits, or identifying which part of the change is the bugfix fix in the commit description. Also to clean up the txindex test it might make sense to call SyncWithValidationInterfaceQueue in the test destructor to prevent nondeterminism in other tests Tree-SHA512: 34c5dca283a7c205cd42b6aa59f00a71fd1bd980bc3d6640a18b280be11470bfabb2fd8c93fadde6fb8e084bcf96c80ec3aa72bbccccfde8a8260d173eaad08f
This commit is contained in:
commit
4bd6bc5cb4
2 changed files with 8 additions and 9 deletions
|
@ -70,12 +70,8 @@ BOOST_FIXTURE_TEST_CASE(txindex_initial_sync, TestChain100Setup)
|
||||||
// shutdown sequence (c.f. Shutdown() in init.cpp)
|
// shutdown sequence (c.f. Shutdown() in init.cpp)
|
||||||
txindex.Stop();
|
txindex.Stop();
|
||||||
|
|
||||||
// txindex job may be scheduled, so stop scheduler before destructing
|
// Let scheduler events finish running to avoid accessing any memory related to txindex after it is destructed
|
||||||
m_node.scheduler->stop();
|
SyncWithValidationInterfaceQueue();
|
||||||
threadGroup.interrupt_all();
|
|
||||||
threadGroup.join_all();
|
|
||||||
|
|
||||||
// Rest of shutdown sequence and destructors happen in ~TestingSetup()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
|
@ -3,12 +3,13 @@
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
//
|
//
|
||||||
#include <chainparams.h>
|
#include <chainparams.h>
|
||||||
#include <random.h>
|
|
||||||
#include <uint256.h>
|
|
||||||
#include <consensus/validation.h>
|
#include <consensus/validation.h>
|
||||||
|
#include <random.h>
|
||||||
#include <sync.h>
|
#include <sync.h>
|
||||||
#include <test/util/setup_common.h>
|
#include <test/util/setup_common.h>
|
||||||
|
#include <uint256.h>
|
||||||
#include <validation.h>
|
#include <validation.h>
|
||||||
|
#include <validationinterface.h>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -97,7 +98,9 @@ BOOST_AUTO_TEST_CASE(chainstatemanager)
|
||||||
exp_tip = c1.m_chain.Tip();
|
exp_tip = c1.m_chain.Tip();
|
||||||
BOOST_CHECK_EQUAL(validated_tip, exp_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());
|
WITH_LOCK(::cs_main, manager.Unload());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue