aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2022-09-27 18:02:22 +0200
committerVasil Dimov <vd@FreeBSD.org>2022-10-11 09:45:54 +0200
commit6526dc3b78d9ca2b5c67564b04dcacbc75b857e1 (patch)
tree957fc461afe31d9613bd4328285ab4f2a3d0da60
parent2e77dff7449af6b46b284c75ce6e1d53a134bc8e (diff)
downloadbitcoin-6526dc3b78d9ca2b5c67564b04dcacbc75b857e1.tar.xz
test: silence TSAN false positive in coinstatsindex_initial_sync
Fixes https://github.com/bitcoin/bitcoin/issues/25365
-rw-r--r--src/test/coinstatsindex_tests.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/test/coinstatsindex_tests.cpp b/src/test/coinstatsindex_tests.cpp
index 2a6a777cfe..8a2b0792fd 100644
--- a/src/test/coinstatsindex_tests.cpp
+++ b/src/test/coinstatsindex_tests.cpp
@@ -76,10 +76,16 @@ BOOST_FIXTURE_TEST_CASE(coinstatsindex_initial_sync, TestChain100Setup)
BOOST_CHECK(block_index != new_block_index);
+ // It is not safe to stop and destroy the index until it finishes handling
+ // the last BlockConnected notification. The BlockUntilSyncedToCurrentChain()
+ // call above is sufficient to ensure this, but the
+ // SyncWithValidationInterfaceQueue() call below is also needed to ensure
+ // TSAN always sees the test thread waiting for the notification thread, and
+ // avoid potential false positive reports.
+ SyncWithValidationInterfaceQueue();
+
// Shutdown sequence (c.f. Shutdown() in init.cpp)
coin_stats_index.Stop();
-
- // Rest of shutdown sequence and destructors happen in ~TestingSetup()
}
// Test shutdown between BlockConnected and ChainStateFlushed notifications,