Skip to content

Commit 36b415c

Browse files
committed
test: skip sv2 lifecycle test on Windows
The lifecycle test repeatedly constructs and destroys TPTester to exercise IPC EventLoop teardown. On Windows it hangs intermittently in std::thread::join during teardown of libmultiprocess thread-local state. This is a known libmultiprocess Windows issue, not specific to sv2-tp: bitcoin-core/libmultiprocess#231 bitcoin/bitcoin#32387 The fix lives upstream and rewrites the EventLoop wakeup primitive (raw fd -> KJ stream) and adds shutdownWrite() in ~Connection. Until that lands and is backported into our libmultiprocess subtree, gate this particular test off on _WIN32. The other sv2 unit tests run normally on Windows; only the explicit teardown loop is affected. Assisted-by: GitHub Copilot Assisted-by: Anthropic Claude Opus 4
1 parent 3d4f87f commit 36b415c

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

src/test/sv2_tester_lifecycle_tests.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
BOOST_FIXTURE_TEST_SUITE(sv2_tester_lifecycle_tests, Sv2BasicTestingSetup)
1717

18+
#ifndef WIN32
1819
BOOST_AUTO_TEST_CASE(tp_tester_repeated_construction)
1920
{
2021
// Run a few iterations; keep count modest to stay fast in CI while
@@ -49,5 +50,12 @@ BOOST_AUTO_TEST_CASE(tp_tester_repeated_construction)
4950
// test hangs or use-after-frees under sanitizers / valgrind.
5051
}
5152
}
53+
#else
54+
// TODO: Re-enable on Windows once the libmultiprocess shutdown hang is fixed
55+
// upstream. Tearing down the IPC EventLoop / per-thread state at process
56+
// exit deadlocks std::thread::join on mingw winpthreads. Tracked in
57+
// libmultiprocess#231 (rewrites the EventLoop wakeup primitive and adds
58+
// shutdownWrite() in ~Connection) and bitcoin#32387.
59+
#endif
5260

5361
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)