A new clang version generally comes with bugfixes, new sanitizer features, deprecations, as well as new features.
Upgrade the sanitizer tasks to use the new version.
A new clang version generally comes with bugfixes, new sanitizer features, deprecations, as well as new features.
Upgrade the sanitizer tasks to use the new version.
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--006a51241073e994b41acfe9ec718e94-->
For detailed information about the code coverage, see the test coverage report.
<!--021abf342d371248e50ceaed478a90ca-->
See the guideline for information on the review process.
| Type | Reviewers |
|---|---|
| ACK | TheCharlatan, hebasto |
| Concept ACK | l0rinc |
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.
<!--174a7506f384e20aa4161008e828411d-->
Reviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
<!--85328a0da195eb286784d51f73fa0af9-->
🚧 At least one of the CI tasks failed. <sub>Debug: https://github.com/bitcoin/bitcoin/runs/28646383146</sub>
<details><summary>Hints</summary>
Make sure to run all tests locally, according to the documentation.
The failure may happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
</details>
rebased.
A follow-up can explore if the tidy task, or the valgrind tasks can also use a newer compiler version.
testing tsan on aarch gives me:
<details><summary>tsan error</summary>
src/wallet/test/wallet_tests.cpp(75): Leaving test case "scan_for_wallet_transactions"; testing time: 2316025us
src/wallet/test/wallet_tests.cpp(921): Entering test case "CreateWalletWithoutChain"
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=62275)
Cycle in lock order graph: M0 (0xffff74604608) => M1 (0xffff7460cb58) => M2 (0xffff7460cd08) => M0
Mutex M1 acquired here while holding mutex M0 in main thread:
[#0](/bitcoin-bitcoin/0/) pthread_rwlock_wrlock <null> (test_bitcoin+0x16b704) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#1](/bitcoin-bitcoin/1/) __db_pthread_mutex_lock <null> (test_bitcoin+0x1744afc) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#2](/bitcoin-bitcoin/2/) wallet::BerkeleyBatch::BerkeleyBatch(wallet::BerkeleyDatabase&, bool, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:366:14 (test_bitcoin+0x12ee4e8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#3](/bitcoin-bitcoin/3/) std::__1::__unique_if<wallet::BerkeleyBatch>::__unique_single std::__1::make_unique[abi:ne190100]<wallet::BerkeleyBatch, wallet::BerkeleyDatabase&, bool, bool&>(wallet::BerkeleyDatabase&, bool&&, bool&) /usr/lib/llvm-19/bin/../include/c++/v1/__memory/unique_ptr.h:634:30 (test_bitcoin+0x12f44e0) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#4](/bitcoin-bitcoin/4/) wallet::BerkeleyDatabase::MakeBatch(bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:945:12 (test_bitcoin+0x12f44e0)
[#5](/bitcoin-bitcoin/5/) wallet::WalletBatch::WalletBatch(wallet::WalletDatabase&, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/walletdb.h:221:26 (test_bitcoin+0x1287688) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#6](/bitcoin-bitcoin/6/) wallet::CWallet::LoadWallet() ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2363:31 (test_bitcoin+0x1287688)
[#7](/bitcoin-bitcoin/7/) wallet::CWallet::Create(wallet::WalletContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, unsigned long, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>&) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2987:47 (test_bitcoin+0x126e2cc) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#8](/bitcoin-bitcoin/8/) wallet::TestLoadWallet(std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, wallet::WalletContext&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:54:19 (test_bitcoin+0xcc8c40) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#9](/bitcoin-bitcoin/9/) wallet::TestLoadWallet(wallet::WalletContext&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:70:12 (test_bitcoin+0xcc8fa8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#10](/bitcoin-bitcoin/10/) wallet::wallet_tests::CreateWalletWithoutChain::test_method() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:925:19 (test_bitcoin+0xc59a68) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#11](/bitcoin-bitcoin/11/) wallet::wallet_tests::CreateWalletWithoutChain_invoker() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:921:1 (test_bitcoin+0xc5920c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#12](/bitcoin-bitcoin/12/) boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:117:11 (test_bitcoin+0x2eb3ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#13](/bitcoin-bitcoin/13/) boost::function0<void>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x28117c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#14](/bitcoin-bitcoin/14/) boost::detail::forward::operator()() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1388:32 (test_bitcoin+0x28117c)
[#15](/bitcoin-bitcoin/15/) boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:137:18 (test_bitcoin+0x28117c)
[#16](/bitcoin-bitcoin/16/) boost::function0<int>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x211b04) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#17](/bitcoin-bitcoin/17/) int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()>>(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:301:30 (test_bitcoin+0x211b04)
[#18](/bitcoin-bitcoin/18/) boost::execution_monitor::catch_signals(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:903:16 (test_bitcoin+0x211b04)
[#19](/bitcoin-bitcoin/19/) boost::execution_monitor::execute(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1301:16 (test_bitcoin+0x211e14) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#20](/bitcoin-bitcoin/20/) boost::execution_monitor::vexecute(boost::function<void ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1397:5 (test_bitcoin+0x20e0a8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#21](/bitcoin-bitcoin/21/) boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 (test_bitcoin+0x20e0a8)
[#22](/bitcoin-bitcoin/22/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:815:44 (test_bitcoin+0x23c8ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#23](/bitcoin-bitcoin/23/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#24](/bitcoin-bitcoin/24/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#25](/bitcoin-bitcoin/25/) boost::unit_test::framework::run(unsigned long, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:1722:29 (test_bitcoin+0x20cfa4) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#26](/bitcoin-bitcoin/26/) boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:250:9 (test_bitcoin+0x224914) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#27](/bitcoin-bitcoin/27/) main ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:306:12 (test_bitcoin+0x22512c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message
Mutex M2 acquired here while holding mutex M1 in main thread:
[#0](/bitcoin-bitcoin/0/) pthread_rwlock_wrlock <null> (test_bitcoin+0x16b704) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#1](/bitcoin-bitcoin/1/) __db_pthread_mutex_lock <null> (test_bitcoin+0x1744afc) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#2](/bitcoin-bitcoin/2/) wallet::BerkeleyBatch::BerkeleyBatch(wallet::BerkeleyDatabase&, bool, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:366:14 (test_bitcoin+0x12ee4e8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#3](/bitcoin-bitcoin/3/) std::__1::__unique_if<wallet::BerkeleyBatch>::__unique_single std::__1::make_unique[abi:ne190100]<wallet::BerkeleyBatch, wallet::BerkeleyDatabase&, bool, bool&>(wallet::BerkeleyDatabase&, bool&&, bool&) /usr/lib/llvm-19/bin/../include/c++/v1/__memory/unique_ptr.h:634:30 (test_bitcoin+0x12f44e0) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#4](/bitcoin-bitcoin/4/) wallet::BerkeleyDatabase::MakeBatch(bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:945:12 (test_bitcoin+0x12f44e0)
[#5](/bitcoin-bitcoin/5/) wallet::WalletBatch::WalletBatch(wallet::WalletDatabase&, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/walletdb.h:221:26 (test_bitcoin+0x1287688) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#6](/bitcoin-bitcoin/6/) wallet::CWallet::LoadWallet() ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2363:31 (test_bitcoin+0x1287688)
[#7](/bitcoin-bitcoin/7/) wallet::CWallet::Create(wallet::WalletContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, unsigned long, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>&) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2987:47 (test_bitcoin+0x126e2cc) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#8](/bitcoin-bitcoin/8/) wallet::TestLoadWallet(std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, wallet::WalletContext&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:54:19 (test_bitcoin+0xcc8c40) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#9](/bitcoin-bitcoin/9/) wallet::TestLoadWallet(wallet::WalletContext&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:70:12 (test_bitcoin+0xcc8fa8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#10](/bitcoin-bitcoin/10/) wallet::wallet_tests::CreateWalletWithoutChain::test_method() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:925:19 (test_bitcoin+0xc59a68) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#11](/bitcoin-bitcoin/11/) wallet::wallet_tests::CreateWalletWithoutChain_invoker() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:921:1 (test_bitcoin+0xc5920c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#12](/bitcoin-bitcoin/12/) boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:117:11 (test_bitcoin+0x2eb3ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#13](/bitcoin-bitcoin/13/) boost::function0<void>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x28117c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#14](/bitcoin-bitcoin/14/) boost::detail::forward::operator()() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1388:32 (test_bitcoin+0x28117c)
[#15](/bitcoin-bitcoin/15/) boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:137:18 (test_bitcoin+0x28117c)
[#16](/bitcoin-bitcoin/16/) boost::function0<int>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x211b04) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#17](/bitcoin-bitcoin/17/) int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()>>(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:301:30 (test_bitcoin+0x211b04)
[#18](/bitcoin-bitcoin/18/) boost::execution_monitor::catch_signals(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:903:16 (test_bitcoin+0x211b04)
[#19](/bitcoin-bitcoin/19/) boost::execution_monitor::execute(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1301:16 (test_bitcoin+0x211e14) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#20](/bitcoin-bitcoin/20/) boost::execution_monitor::vexecute(boost::function<void ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1397:5 (test_bitcoin+0x20e0a8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#21](/bitcoin-bitcoin/21/) boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 (test_bitcoin+0x20e0a8)
[#22](/bitcoin-bitcoin/22/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:815:44 (test_bitcoin+0x23c8ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#23](/bitcoin-bitcoin/23/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#24](/bitcoin-bitcoin/24/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#25](/bitcoin-bitcoin/25/) boost::unit_test::framework::run(unsigned long, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:1722:29 (test_bitcoin+0x20cfa4) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#26](/bitcoin-bitcoin/26/) boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:250:9 (test_bitcoin+0x224914) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#27](/bitcoin-bitcoin/27/) main ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:306:12 (test_bitcoin+0x22512c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
Mutex M0 acquired here while holding mutex M2 in main thread:
[#0](/bitcoin-bitcoin/0/) pthread_rwlock_rdlock <null> (test_bitcoin+0x16b184) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#1](/bitcoin-bitcoin/1/) __db_pthread_mutex_readlock <null> (test_bitcoin+0x1744d7c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#2](/bitcoin-bitcoin/2/) wallet::BerkeleyBatch::BerkeleyBatch(wallet::BerkeleyDatabase&, bool, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:366:14 (test_bitcoin+0x12ee4e8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#3](/bitcoin-bitcoin/3/) std::__1::__unique_if<wallet::BerkeleyBatch>::__unique_single std::__1::make_unique[abi:ne190100]<wallet::BerkeleyBatch, wallet::BerkeleyDatabase&, bool, bool&>(wallet::BerkeleyDatabase&, bool&&, bool&) /usr/lib/llvm-19/bin/../include/c++/v1/__memory/unique_ptr.h:634:30 (test_bitcoin+0x12f44e0) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#4](/bitcoin-bitcoin/4/) wallet::BerkeleyDatabase::MakeBatch(bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/bdb.cpp:945:12 (test_bitcoin+0x12f44e0)
[#5](/bitcoin-bitcoin/5/) wallet::WalletBatch::WalletBatch(wallet::WalletDatabase&, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/walletdb.h:221:26 (test_bitcoin+0x1287688) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#6](/bitcoin-bitcoin/6/) wallet::CWallet::LoadWallet() ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2363:31 (test_bitcoin+0x1287688)
[#7](/bitcoin-bitcoin/7/) wallet::CWallet::Create(wallet::WalletContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, unsigned long, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str>>&) ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./src/wallet/wallet.cpp:2987:47 (test_bitcoin+0x126e2cc) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#8](/bitcoin-bitcoin/8/) wallet::TestLoadWallet(std::__1::unique_ptr<wallet::WalletDatabase, std::__1::default_delete<wallet::WalletDatabase>>, wallet::WalletContext&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:54:19 (test_bitcoin+0xcc8c40) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#9](/bitcoin-bitcoin/9/) wallet::TestLoadWallet(wallet::WalletContext&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/util/./src/wallet/test/util.cpp:70:12 (test_bitcoin+0xcc8fa8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#10](/bitcoin-bitcoin/10/) wallet::wallet_tests::CreateWalletWithoutChain::test_method() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:925:19 (test_bitcoin+0xc59a68) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#11](/bitcoin-bitcoin/11/) wallet::wallet_tests::CreateWalletWithoutChain_invoker() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./src/wallet/test/wallet_tests.cpp:921:1 (test_bitcoin+0xc5920c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#12](/bitcoin-bitcoin/12/) boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:117:11 (test_bitcoin+0x2eb3ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#13](/bitcoin-bitcoin/13/) boost::function0<void>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x28117c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#14](/bitcoin-bitcoin/14/) boost::detail::forward::operator()() ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1388:32 (test_bitcoin+0x28117c)
[#15](/bitcoin-bitcoin/15/) boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:137:18 (test_bitcoin+0x28117c)
[#16](/bitcoin-bitcoin/16/) boost::function0<int>::operator()() const ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x211b04) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#17](/bitcoin-bitcoin/17/) int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()>>(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:301:30 (test_bitcoin+0x211b04)
[#18](/bitcoin-bitcoin/18/) boost::execution_monitor::catch_signals(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:903:16 (test_bitcoin+0x211b04)
[#19](/bitcoin-bitcoin/19/) boost::execution_monitor::execute(boost::function<int ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1301:16 (test_bitcoin+0x211e14) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#20](/bitcoin-bitcoin/20/) boost::execution_monitor::vexecute(boost::function<void ()> const&) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1397:5 (test_bitcoin+0x20e0a8) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#21](/bitcoin-bitcoin/21/) boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 (test_bitcoin+0x20e0a8)
[#22](/bitcoin-bitcoin/22/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:815:44 (test_bitcoin+0x23c8ec) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#23](/bitcoin-bitcoin/23/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#24](/bitcoin-bitcoin/24/) boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:784:58 (test_bitcoin+0x23ce08) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#25](/bitcoin-bitcoin/25/) boost::unit_test::framework::run(unsigned long, bool) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/framework.ipp:1722:29 (test_bitcoin+0x20cfa4) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#26](/bitcoin-bitcoin/26/) boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:250:9 (test_bitcoin+0x224914) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
[#27](/bitcoin-bitcoin/27/) main ci/scratch/build-aarch64-unknown-linux-gnu/src/test/./depends/aarch64-unknown-linux-gnu/include/boost/test/impl/unit_test_main.ipp:306:12 (test_bitcoin+0x22512c) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572)
SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/test/test_bitcoin+0x16b704) (BuildId: f04f46ca28a9a2c623cb88a2e41ac6a1381f7572) in pthread_rwlock_wrlock
==================
127/137 Test [#118](/bitcoin-bitcoin/118/): validation_chainstatemanager_tests ... Passed 73.51 sec
128/137 Test [#136](/bitcoin-bitcoin/136/): walletload_tests ..................... Passed 40.86 sec
129/137 Test [#111](/bitcoin-bitcoin/111/): txvalidationcache_tests .............. Passed 111.55 sec
130/137 Test [#116](/bitcoin-bitcoin/116/): validation_block_tests ............... Passed 107.92 sec
131/137 Test [#77](/bitcoin-bitcoin/77/): random_tests ......................... Passed 201.19 sec
132/137 Test [#7](/bitcoin-bitcoin/7/): exhaustive_tests ..................... Passed 253.06 sec
133/137 Test [#9](/bitcoin-bitcoin/9/): bench_sanity_check_high_priority ..... Passed 286.50 sec
134/137 Test [#31](/bitcoin-bitcoin/31/): coins_tests .......................... Passed 328.75 sec
135/137 Test [#123](/bitcoin-bitcoin/123/): coinselector_tests ................... Passed 245.65 sec
136/137 Test [#5](/bitcoin-bitcoin/5/): noverify_tests ....................... Passed 616.08 sec
137/137 Test [#6](/bitcoin-bitcoin/6/): tests ................................ Passed 1415.82 sec
98% tests passed, 3 tests failed out of 137
Total Test time (real) = 1415.98 sec
The following tests FAILED:
133 - wallet_tests (Failed)
135 - walletdb_tests (Failed)
137 - db_tests (Failed)
Errors while running CTest
</details>
Not sure if this is a regression, or similar to https://github.com/bitcoin/bitcoin/issues/30764
Testing on aarch64, Asan and Fuzz pass. The Tsan issue on aarch64 is pre-existing and unrelated to this pull request, so can be ignored.
Concept ACK
ACK fabe90c8242aa45a8b9925347ca6fc11d5852ffd
ACK fabe90c8242aa45a8b9925347ca6fc11d5852ffd, I have reviewed the code and it looks OK.