pinheadmz
commented at 11:06 AM on July 3, 2025:
member
This removes the dependency on libevent for events scheduled by RPC commands, like re-locking a wallet some time after decryption with walletpassphrase. Since walletpassphrase is currently the only RPC that does this, RPCRunLater, RPCTimerInterface and all related methods are left unused, and deleted in the second commit. Any future RPC that needs to execute a callback in the future can follow the pattern in this PR and just use a scheduler from node or wallet context.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#bitcoin-core/gui/866 (Enhanced Traffic Graph Widget with Multi-timeframe Support and Data Persistence by rebroad)
#32061 (Replace libevent with our own HTTP and socket-handling implementation by pinheadmz)
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.
<!--5faf32d7da4f0f540f40219e4f7537a3-->
pinheadmz renamed this: rpc: use CScheduler for HTTPRPCTimer and remove RPCTimer rpc: use CScheduler for relocking wallwt and remove RPCTimer on Jul 3, 2025
pinheadmz renamed this: rpc: use CScheduler for relocking wallwt and remove RPCTimer rpc: use CScheduler for relocking wallet and remove RPCTimer on Jul 3, 2025
furszy
commented at 2:22 PM on July 3, 2025:
member
ACKfcfd3db563e89fd79820a4cdfa102d624d801de1
fjahr
commented at 9:51 PM on July 5, 2025:
contributor
fanquake
commented at 10:57 AM on July 25, 2025:
member
Reproduced locally (and consistently) on aarch64 and x86_64. Wondered why this isn't happening in the TSAN CI, it's because of DEBUG_LOCKORDER. If you drop that, then the CI will reproduce:
<details><summary>more details</summary>
134/143 Test [#107](/bitcoin-bitcoin/107/): transaction_tests .................... Passed 19.46 sec
135/143 Test [#116](/bitcoin-bitcoin/116/): txvalidationcache_tests .............. Passed 21.00 sec
136/143 Test [#140](/bitcoin-bitcoin/140/): wallet_tests ......................... Passed 18.79 sec
137/143 Test [#5](/bitcoin-bitcoin/5/): secp256k1_exhaustive_tests ........... Passed 67.90 sec
138/143 Test [#79](/bitcoin-bitcoin/79/): random_tests ......................... Passed 63.75 sec
139/143 Test [#31](/bitcoin-bitcoin/31/): coins_tests_dbbase ................... Passed 93.41 sec
140/143 Test [#130](/bitcoin-bitcoin/130/): coinselector_tests ................... Passed 100.65 sec
141/143 Test [#7](/bitcoin-bitcoin/7/): bench_sanity_check ................... Passed 173.72 sec
142/143 Test [#3](/bitcoin-bitcoin/3/): secp256k1_noverify_tests ............. Passed 258.21 sec
143/143 Test [#4](/bitcoin-bitcoin/4/): secp256k1_tests ...................... Passed 541.78 sec
100% tests passed, 0 tests failed out of 143
Total Test time (real) = 541.79 sec
+ '[' '' = true ']'
+ '[' true = true ']'
+ eval 'TEST_RUNNER_EXTRA=()'
++ TEST_RUNNER_EXTRA=()
+ LD_LIBRARY_PATH=/ci_container_base/depends/aarch64-unknown-linux-gnu/lib
+ /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/test/functional/test_runner.py --ci -j17 --tmpdirprefix /ci_container_base/ci/scratch/test_runner/ --ansi --combinedlogslen=99999999 --timeout-factor=40 --quiet --failfast
16/270 - wallet_multiwallet.py failed, Duration: 15 s
stdout:
2025-07-25T10:37:15.282773Z TestFramework (INFO): PRNG seed is: 9066748361541480888
2025-07-25T10:37:15.283864Z TestFramework (INFO): Initializing test directory /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242
2025-07-25T10:37:16.186982Z TestFramework (INFO): Verify warning is emitted when failing to scan the wallets directory
2025-07-25T10:37:16.187188Z TestFramework (WARNING): Skipping test involving chmod as it requires a non-root user.
2025-07-25T10:37:20.220825Z TestFramework (INFO): Do not allow -upgradewallet with multiwallet
2025-07-25T10:37:25.749244Z TestFramework (INFO): Check for per-wallet settxfee call
2025-07-25T10:37:25.760051Z TestFramework (INFO): Test dynamic wallet loading
2025-07-25T10:37:27.498254Z TestFramework (INFO): Load first wallet
2025-07-25T10:37:27.543494Z TestFramework (INFO): Load second wallet
2025-07-25T10:37:27.585449Z TestFramework (INFO): Concurrent wallet loading
2025-07-25T10:37:27.627434Z TestFramework (INFO): Load remaining wallets
2025-07-25T10:37:27.800707Z TestFramework (INFO): Test dynamic wallet creation.
2025-07-25T10:37:27.918250Z TestFramework (INFO): Test dynamic wallet unloading
2025-07-25T10:37:30.117073Z TestFramework (ERROR): Unexpected exception
Traceback (most recent call last):
File "/ci_container_base/test/functional/test_framework/test_framework.py", line 195, in main
self.run_test()
File "/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/test/functional/wallet_multiwallet.py", line 366, in run_test
ensure_for(duration=1.1, f=lambda: 'w2' not in self.nodes[0].listwallets())
File "/ci_container_base/test/functional/test_framework/util.py", line 289, in ensure_for
if not f():
^^^
File "/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/test/functional/wallet_multiwallet.py", line 366, in <lambda>
ensure_for(duration=1.1, f=lambda: 'w2' not in self.nodes[0].listwallets())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/coverage.py", line 50, in __call__
return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 137, in __call__
response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 111, in _request
return self._get_response()
^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 174, in _get_response
http_response = self.__conn.getresponse()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/http/client.py", line 1428, in getresponse
response.begin()
File "/usr/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/http/client.py", line 300, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
2025-07-25T10:37:30.170430Z TestFramework (INFO): Not stopping nodes as test failed. The dangling processes will be cleaned up later.
2025-07-25T10:37:30.170649Z TestFramework (WARNING): Not cleaning up dir /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242
2025-07-25T10:37:30.170732Z TestFramework (ERROR): Test failed. Test logging available at /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/test_framework.log
2025-07-25T10:37:30.171130Z TestFramework (ERROR):
2025-07-25T10:37:30.171630Z TestFramework (ERROR): Hint: Call /ci_container_base/test/functional/combine_logs.py '/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242' to consolidate all logs
2025-07-25T10:37:30.171799Z TestFramework (ERROR):
2025-07-25T10:37:30.171906Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-07-25T10:37:30.172049Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
2025-07-25T10:37:30.172133Z TestFramework (ERROR):
stderr:
[node 0] Cleaning up leftover process
Combine the logs and print the last 99999999 lines ...
============
Combined log for /ci_container_base/ci/scratch/test_runner//test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242:
============
test 2025-07-25T10:37:15.282773Z TestFramework (INFO): PRNG seed is: 9066748361541480888
test 2025-07-25T10:37:15.282988Z TestFramework (DEBUG): Setting up network thread
test 2025-07-25T10:37:15.283864Z TestFramework (INFO): Initializing test directory /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242
test 2025-07-25T10:37:15.286296Z TestFramework.node0 (DEBUG): bitcoind started, waiting for RPC to come up
test 2025-07-25T10:37:15.288884Z TestFramework.node1 (DEBUG): bitcoind started, waiting for RPC to come up
node0 2025-07-25T10:37:15.313892Z [init] [init/common.cpp:151] [void init::LogPackageVersion()] Bitcoin Core version v29.99.0-443c32a3e686-dirty (release build)
node0 2025-07-25T10:37:15.313940Z [init] [init.cpp:731] [void InitParameterInteraction(ArgsManager &)] parameter interaction: -bind set -> setting -listen=1
node0 2025-07-25T10:37:15.314658Z [init] [kernel/context.cpp:20] [auto kernel::Context::Context()::(anonymous class)::operator()() const] Using the 'arm_shani(1way,2way)' SHA256 implementation
node1 2025-07-25T10:37:15.316791Z [init] [init/common.cpp:151] [void init::LogPackageVersion()] Bitcoin Core version v29.99.0-443c32a3e686-dirty (release build)
node1 2025-07-25T10:37:15.316825Z [init] [init.cpp:731] [void InitParameterInteraction(ArgsManager &)] parameter interaction: -bind set -> setting -listen=1
node1 2025-07-25T10:37:15.317582Z [init] [kernel/context.cpp:20] [auto kernel::Context::Context()::(anonymous class)::operator()() const] Using the 'arm_shani(1way,2way)' SHA256 implementation
node0 2025-07-25T10:37:15.420537Z [init] [init/common.cpp:119] [bool init::StartLogging(const ArgsManager &)] Default data directory /root/.bitcoin
node0 2025-07-25T10:37:15.420605Z [init] [init/common.cpp:120] [bool init::StartLogging(const ArgsManager &)] Using data directory /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/node0/regtest
node0 2025-07-25T10:37:15.420697Z [init] [init/common.cpp:129] [bool init::StartLogging(const ArgsManager &)] Config file: /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/node0/bitcoin.conf
node0 2025-07-25T10:37:15.420826Z [init] [common/args.cpp:850] [void ArgsManager::logArgsPrefix(const std::string &, const std::string &, const std::map<std::string, std::vector<common::SettingsValue>> &) const] Config file arg: regtest="1"
node0 2025-07-25T10:37:15.420924Z [init] [common/args.cpp:850] [void ArgsManager::logArgsPrefix(const std::string &, const std::string &, const std::map<std::string, std::vector<common::SettingsValue>> &) const] Config file arg: [regtest] bind="127.0.0.1"
node0 2025-07-25T10:37:15.420984Z [init] [common/args.cpp:850] [void ArgsManager::logArgsPrefix(const std::string &, const std::string &, const std::map<std::string, std::vector<common::SettingsValue>> &) const] Config file arg: [regtest] connect="0"
node0 2025-07-25T10:37:15.421061Z [init] [common/args.cpp:850] [void ArgsManager::logArgsPrefix(const std::string &, const std::string &, const std::map<std::string, std::vector<common::SettingsValue>> &) const] Config file arg: [regtest] discover="0"
node0 2025-07-25T10:37:15.421119Z [init] [common/args.cpp:850] [void ArgsManager::logArgsPrefix(const std::string &, const std::string &, const std::map<std::string, std::vector<common::SettingsValue>> &) const] Config file arg: [regtest] dnsseed="0"
<snip>
node0 2025-07-25T10:37:29.304838Z [httpworker.3] [rpc/request.cpp:243] [void JSONRPCRequest::parse(const UniValue &)] [rpc] ThreadRPCServer method=listwallets user=__cookie__
node0 2025-07-25T10:37:29.507042Z [http] [httpserver.cpp:308] [void http_request_cb(struct evhttp_request *, void *)] [http] Received a POST request for / from 127.0.0.1:39730
node0 2025-07-25T10:37:29.507621Z [httpworker.4] [rpc/request.cpp:243] [void JSONRPCRequest::parse(const UniValue &)] [rpc] ThreadRPCServer method=listwallets user=__cookie__
test 2025-07-25T10:37:30.117073Z TestFramework (ERROR): Unexpected exception
Traceback (most recent call last):
File "/ci_container_base/test/functional/test_framework/test_framework.py", line 195, in main
self.run_test()
File "/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/test/functional/wallet_multiwallet.py", line 366, in run_test
ensure_for(duration=1.1, f=lambda: 'w2' not in self.nodes[0].listwallets())
File "/ci_container_base/test/functional/test_framework/util.py", line 289, in ensure_for
if not f():
^^^
File "/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/test/functional/wallet_multiwallet.py", line 366, in <lambda>
ensure_for(duration=1.1, f=lambda: 'w2' not in self.nodes[0].listwallets())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/coverage.py", line 50, in __call__
return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 137, in __call__
response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 111, in _request
return self._get_response()
^^^^^^^^^^^^^^^^^^^^
File "/ci_container_base/test/functional/test_framework/authproxy.py", line 174, in _get_response
http_response = self.__conn.getresponse()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/http/client.py", line 1428, in getresponse
response.begin()
File "/usr/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/http/client.py", line 300, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
test 2025-07-25T10:37:30.119931Z TestFramework (DEBUG): Closing down network thread
test 2025-07-25T10:37:30.170430Z TestFramework (INFO): Not stopping nodes as test failed. The dangling processes will be cleaned up later.
test 2025-07-25T10:37:30.170649Z TestFramework (WARNING): Not cleaning up dir /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242
test 2025-07-25T10:37:30.170732Z TestFramework (ERROR): Test failed. Test logging available at /ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/test_framework.log
test 2025-07-25T10:37:30.171130Z TestFramework (ERROR):
test 2025-07-25T10:37:30.171630Z TestFramework (ERROR): Hint: Call /ci_container_base/test/functional/combine_logs.py '/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242' to consolidate all logs
test 2025-07-25T10:37:30.171799Z TestFramework (ERROR):
test 2025-07-25T10:37:30.171906Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
test 2025-07-25T10:37:30.172049Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
test 2025-07-25T10:37:30.172133Z TestFramework (ERROR):
node0 stderr ==================
WARNING: ThreadSanitizer: data race (pid=17110)
Write of size 8 at 0xffff92417b20 by thread T1 (mutexes: write M0):
[#0](/bitcoin-bitcoin/0/) operator delete(void*, unsigned long) <null> (bitcoind+0x1af774) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#1](/bitcoin-bitcoin/1/) void std::__1::__libcpp_operator_delete[abi:ne200100]<std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>*, unsigned long>(std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>*, unsigned long) /usr/lib/llvm-20/bin/../include/c++/v1/__new/allocate.h:46:3 (bitcoind+0x741cd8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#2](/bitcoin-bitcoin/2/) void std::__1::__libcpp_deallocate[abi:ne200100]<std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>>(std::__1::__type_identity<std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>>::type*, std::__1::__element_count, unsigned long) /usr/lib/llvm-20/bin/../include/c++/v1/__new/allocate.h:86:12 (bitcoind+0x741cd8)
[#3](/bitcoin-bitcoin/3/) std::__1::allocator<std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>>::deallocate[abi:ne200100](std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>*, unsigned long) /usr/lib/llvm-20/bin/../include/c++/v1/__memory/allocator.h:120:7 (bitcoind+0x741cd8)
[#4](/bitcoin-bitcoin/4/) std::__1::__shared_ptr_pointer<wallet::CWallet*, void (*)(wallet::CWallet*), std::__1::allocator<wallet::CWallet>>::__on_zero_shared_weak() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_ptr.h:134:7 (bitcoind+0x741cd8)
[#5](/bitcoin-bitcoin/5/) std::__1::weak_ptr<wallet::CWallet>::~weak_ptr() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_ptr.h:1315:15 (bitcoind+0x7e2bcc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#6](/bitcoin-bitcoin/6/) wallet::walletpassphrase()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const::'lambda'()::~() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./wallet/rpc/encrypt.cpp:102:40 (bitcoind+0x7e2bcc)
[#7](/bitcoin-bitcoin/7/) std::__1::__function::__alloc_func<wallet::walletpassphrase()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const::'lambda'(), std::__1::allocator<wallet::walletpassphrase()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const::'lambda'()>, void ()>::destroy[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:181:14 (bitcoind+0x7e2bcc)
[#8](/bitcoin-bitcoin/8/) std::__1::__function::__func<wallet::walletpassphrase()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const::'lambda'(), std::__1::allocator<wallet::walletpassphrase()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const::'lambda'()>, void ()>::destroy() /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:305:8 (bitcoind+0x7e2bcc)
[#9](/bitcoin-bitcoin/9/) std::__1::__function::__value_func<void ()>::~__value_func[abi:ne200100]() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./scheduler.h (bitcoind+0x9f0af0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#10](/bitcoin-bitcoin/10/) std::__1::function<void ()>::~function() /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:986:43 (bitcoind+0x9f0af0)
[#11](/bitcoin-bitcoin/11/) CScheduler::serviceQueue() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./scheduler.cpp:62:9 (bitcoind+0x9f0af0)
[#12](/bitcoin-bitcoin/12/) AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7::operator()() const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./init.cpp:1364:94 (bitcoind+0x1d383c) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#13](/bitcoin-bitcoin/13/) decltype(std::declval<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&>()()) std::__1::__invoke[abi:ne200100]<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&>(AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x1d383c)
[#14](/bitcoin-bitcoin/14/) void std::__1::__invoke_void_return_wrapper<void, true>::__call[abi:ne200100]<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&>(AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:251:5 (bitcoind+0x1d383c)
[#15](/bitcoin-bitcoin/15/) void std::__1::__invoke_r[abi:ne200100]<void, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&>(AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x1d383c)
[#16](/bitcoin-bitcoin/16/) std::__1::__function::__alloc_func<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7, std::__1::allocator<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>, void ()>::operator()[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x1d383c)
[#17](/bitcoin-bitcoin/17/) std::__1::__function::__func<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7, std::__1::allocator<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>, void ()>::operator()() /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x1d383c)
[#18](/bitcoin-bitcoin/18/) std::__1::__function::__value_func<void ()>::operator()[abi:ne200100]() const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0xab77f8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#19](/bitcoin-bitcoin/19/) std::__1::function<void ()>::operator()() const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0xab77f8)
[#20](/bitcoin-bitcoin/20/) util::TraceThread(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/util/./util/thread.cpp:21:9 (bitcoind+0xab77f8)
[#21](/bitcoin-bitcoin/21/) decltype(std::declval<void (*)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>)>()(std::declval<char const*>(), std::declval<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>())) std::__1::__invoke[abi:ne200100]<void (*)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const*, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>(void (*&&)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const*&&, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x1d33c0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#22](/bitcoin-bitcoin/22/) void std::__1::__thread_execute[abi:ne200100]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const*, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7, 2ul, 3ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const*, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>&, std::__1::__tuple_indices<2ul, 3ul>) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:199:3 (bitcoind+0x1d33c0)
[#23](/bitcoin-bitcoin/23/) void* std::__1::__thread_proxy[abi:ne200100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const*, AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7>>(void*) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:208:3 (bitcoind+0x1d33c0)
Previous read of size 8 at 0xffff92417b20 by thread T16:
[#0](/bitcoin-bitcoin/0/) std::__1::__shared_count::__release_shared[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_count.h:91:7 (bitcoind+0x6f70cc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#1](/bitcoin-bitcoin/1/) std::__1::__shared_weak_count::__release_shared[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_count.h:120:25 (bitcoind+0x6f70cc)
[#2](/bitcoin-bitcoin/2/) std::__1::shared_ptr<wallet::CWallet>::~shared_ptr[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_ptr.h:558:17 (bitcoind+0x6f70cc)
[#3](/bitcoin-bitcoin/3/) std::__1::shared_ptr<wallet::CWallet>::reset[abi:ne200100]() /usr/lib/llvm-20/bin/../include/c++/v1/__memory/shared_ptr.h:608:50 (bitcoind+0x6f70cc)
[#4](/bitcoin-bitcoin/4/) wallet::WaitForDeleteWallet(std::__1::shared_ptr<wallet::CWallet>&&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./wallet/wallet.cpp:264:12 (bitcoind+0x6f70cc)
[#5](/bitcoin-bitcoin/5/) wallet::unloadwallet()::$_0::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./wallet/rpc/wallet.cpp:490:5 (bitcoind+0x6a3ad0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#6](/bitcoin-bitcoin/6/) decltype(std::declval<wallet::unloadwallet()::$_0&>()(std::declval<RPCHelpMan const&>(), std::declval<JSONRPCRequest const&>())) std::__1::__invoke[abi:ne200100]<wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&>(wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x6a3ad0)
[#7](/bitcoin-bitcoin/7/) UniValue std::__1::__invoke_void_return_wrapper<UniValue, false>::__call[abi:ne200100]<wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&>(wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:243:12 (bitcoind+0x6a3ad0)
[#8](/bitcoin-bitcoin/8/) UniValue std::__1::__invoke_r[abi:ne200100]<UniValue, wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&>(wallet::unloadwallet()::$_0&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x6a3ad0)
[#9](/bitcoin-bitcoin/9/) std::__1::__function::__alloc_func<wallet::unloadwallet()::$_0, std::__1::allocator<wallet::unloadwallet()::$_0>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()[abi:ne200100](RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x6a3ad0)
[#10](/bitcoin-bitcoin/10/) std::__1::__function::__func<wallet::unloadwallet()::$_0, std::__1::allocator<wallet::unloadwallet()::$_0>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x6a3ad0)
[#11](/bitcoin-bitcoin/11/) std::__1::__function::__value_func<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()[abi:ne200100](RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0x9da0e0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#12](/bitcoin-bitcoin/12/) std::__1::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0x9da0e0)
[#13](/bitcoin-bitcoin/13/) RPCHelpMan::HandleRequest(JSONRPCRequest const&) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/util.cpp:663:20 (bitcoind+0x9da0e0)
[#14](/bitcoin-bitcoin/14/) CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/server.h:60:91 (bitcoind+0x3f7570) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#15](/bitcoin-bitcoin/15/) decltype(std::declval<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>()(std::declval<JSONRPCRequest const&>(), std::declval<UniValue&>(), std::declval<bool>())) std::__1::__invoke[abi:ne200100]<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x3f7570)
[#16](/bitcoin-bitcoin/16/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call[abi:ne200100]<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:243:12 (bitcoind+0x3f7570)
[#17](/bitcoin-bitcoin/17/) bool std::__1::__invoke_r[abi:ne200100]<bool, CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x3f7570)
[#18](/bitcoin-bitcoin/18/) std::__1::__function::__alloc_func<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x3f7570)
[#19](/bitcoin-bitcoin/19/) std::__1::__function::__func<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x3f7570)
[#20](/bitcoin-bitcoin/20/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0x65c7a8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#21](/bitcoin-bitcoin/21/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0x65c7a8)
[#22](/bitcoin-bitcoin/22/) wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/wallet/./wallet/interfaces.cpp:562:24 (bitcoind+0x65c7a8)
[#23](/bitcoin-bitcoin/23/) decltype(std::declval<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>()(std::declval<JSONRPCRequest const&>(), std::declval<UniValue&>(), std::declval<bool>())) std::__1::__invoke[abi:ne200100]<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x65c7a8)
[#24](/bitcoin-bitcoin/24/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call[abi:ne200100]<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:243:12 (bitcoind+0x65c7a8)
[#25](/bitcoin-bitcoin/25/) bool std::__1::__invoke_r[abi:ne200100]<bool, wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x65c7a8)
[#26](/bitcoin-bitcoin/26/) std::__1::__function::__alloc_func<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x65c7a8)
[#27](/bitcoin-bitcoin/27/) std::__1::__function::__func<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x65c7a8)
[#28](/bitcoin-bitcoin/28/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0x31c3fc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#29](/bitcoin-bitcoin/29/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0x31c3fc)
[#30](/bitcoin-bitcoin/30/) node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./node/interfaces.cpp:511:24 (bitcoind+0x31c3fc)
[#31](/bitcoin-bitcoin/31/) decltype(std::declval<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>()(std::declval<JSONRPCRequest const&>(), std::declval<UniValue&>(), std::declval<bool>())) std::__1::__invoke[abi:ne200100]<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x31c3fc)
[#32](/bitcoin-bitcoin/32/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call[abi:ne200100]<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:243:12 (bitcoind+0x31c3fc)
[#33](/bitcoin-bitcoin/33/) bool std::__1::__invoke_r[abi:ne200100]<bool, node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool>(node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&, JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x31c3fc)
[#34](/bitcoin-bitcoin/34/) std::__1::__function::__alloc_func<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x31c3fc)
[#35](/bitcoin-bitcoin/35/) std::__1::__function::__func<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool), std::__1::allocator<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)>, bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x31c3fc)
[#36](/bitcoin-bitcoin/36/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()[abi:ne200100](JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0x5147e0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#37](/bitcoin-bitcoin/37/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0x5147e0)
[#38](/bitcoin-bitcoin/38/) ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/server.cpp:504:20 (bitcoind+0x5147e0)
[#39](/bitcoin-bitcoin/39/) ExecuteCommands(std::__1::vector<CRPCCommand const*, std::__1::allocator<CRPCCommand const*>> const&, JSONRPCRequest const&, UniValue&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/server.cpp:471:13 (bitcoind+0x5147e0)
[#40](/bitcoin-bitcoin/40/) CRPCTable::execute(JSONRPCRequest const&) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/server.cpp:491:13 (bitcoind+0x513848) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#41](/bitcoin-bitcoin/41/) JSONRPCExec(JSONRPCRequest const&, bool) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./rpc/server.cpp:347:31 (bitcoind+0x513070) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#42](/bitcoin-bitcoin/42/) HTTPReq_JSONRPC(std::__1::any const&, HTTPRequest*) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httprpc.cpp:165:21 (bitcoind+0x61a3cc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#43](/bitcoin-bitcoin/43/) StartHTTPRPC(std::__1::any const&)::$_0::operator()(HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httprpc.cpp:337:80 (bitcoind+0x61a3cc)
[#44](/bitcoin-bitcoin/44/) decltype(std::declval<StartHTTPRPC(std::__1::any const&)::$_0&>()(std::declval<HTTPRequest*>(), std::declval<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&>())) std::__1::__invoke[abi:ne200100]<StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&>(StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x61a3cc)
[#45](/bitcoin-bitcoin/45/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call[abi:ne200100]<StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&>(StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:243:12 (bitcoind+0x61a3cc)
[#46](/bitcoin-bitcoin/46/) bool std::__1::__invoke_r[abi:ne200100]<bool, StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&>(StartHTTPRPC(std::__1::any const&)::$_0&, HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:273:10 (bitcoind+0x61a3cc)
[#47](/bitcoin-bitcoin/47/) std::__1::__function::__alloc_func<StartHTTPRPC(std::__1::any const&)::$_0, std::__1::allocator<StartHTTPRPC(std::__1::any const&)::$_0>, bool (HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)>::operator()[abi:ne200100](HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:167:12 (bitcoind+0x61a3cc)
[#48](/bitcoin-bitcoin/48/) std::__1::__function::__func<StartHTTPRPC(std::__1::any const&)::$_0, std::__1::allocator<StartHTTPRPC(std::__1::any const&)::$_0>, bool (HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)>::operator()(HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:319:10 (bitcoind+0x61a3cc)
[#49](/bitcoin-bitcoin/49/) std::__1::__function::__value_func<bool (HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)>::operator()[abi:ne200100](HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:436:12 (bitcoind+0x626e64) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#50](/bitcoin-bitcoin/50/) std::__1::function<bool (HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)>::operator()(HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) const /usr/lib/llvm-20/bin/../include/c++/v1/__functional/function.h:995:10 (bitcoind+0x626e64)
[#51](/bitcoin-bitcoin/51/) HTTPWorkItem::operator()() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httpserver.cpp:62:9 (bitcoind+0x626e64)
[#52](/bitcoin-bitcoin/52/) WorkQueue<HTTPClosure>::Run() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httpserver.cpp:117:13 (bitcoind+0x6297a8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#53](/bitcoin-bitcoin/53/) HTTPWorkQueueRun(WorkQueue<HTTPClosure>*, int) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httpserver.cpp:419:12 (bitcoind+0x6216e8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#54](/bitcoin-bitcoin/54/) decltype(std::declval<void (*)(WorkQueue<HTTPClosure>*, int)>()(std::declval<WorkQueue<HTTPClosure>*>(), std::declval<int>())) std::__1::__invoke[abi:ne200100]<void (*)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int>(void (*&&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&&) /usr/lib/llvm-20/bin/../include/c++/v1/__type_traits/invoke.h:179:25 (bitcoind+0x629490) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#55](/bitcoin-bitcoin/55/) void std::__1::__thread_execute[abi:ne200100]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int, 2ul, 3ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int>&, std::__1::__tuple_indices<2ul, 3ul>) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:199:3 (bitcoind+0x629490)
[#56](/bitcoin-bitcoin/56/) void* std::__1::__thread_proxy[abi:ne200100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int>>(void*) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:208:3 (bitcoind+0x629490)
Mutex M0 (0xffff90401dd8) created at:
[#0](/bitcoin-bitcoin/0/) pthread_mutex_trylock <null> (bitcoind+0x12017c) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#1](/bitcoin-bitcoin/1/) std::__1::mutex::try_lock() <null> (libc++.so.1+0x6d524) (BuildId: d86dd6c86e9893451404de81c223ae225f27a256)
[#2](/bitcoin-bitcoin/2/) UniqueLock<AnnotatedMixin<std::__1::mutex>>::UniqueLock(AnnotatedMixin<std::__1::mutex>&, char const*, char const*, int, bool) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./sync.h:183:13 (bitcoind+0x9f0fb8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#3](/bitcoin-bitcoin/3/) CScheduler::schedule(std::__1::function<void ()>, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>>) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./scheduler.cpp:74:9 (bitcoind+0x9f0fb8)
[#4](/bitcoin-bitcoin/4/) CScheduler::scheduleFromNow(std::__1::function<void ()>, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./scheduler.h:55:9 (bitcoind+0x267dcc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#5](/bitcoin-bitcoin/5/) CScheduler::scheduleEvery(std::__1::function<void ()>, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./scheduler.cpp:110:5 (bitcoind+0x9f1594) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#6](/bitcoin-bitcoin/6/) AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./init.cpp:1367:15 (bitcoind+0x1c7974) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#7](/bitcoin-bitcoin/7/) AppInit(node::NodeContext&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:237:43 (bitcoind+0x1b1168) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#8](/bitcoin-bitcoin/8/) main /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:283:10 (bitcoind+0x1b1168)
Thread T1 'b-scheduler' (tid=17117, running) created by main thread at:
[#0](/bitcoin-bitcoin/0/) pthread_create <null> (bitcoind+0x11dbb0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#1](/bitcoin-bitcoin/1/) std::__1::__libcpp_thread_create[abi:ne200100](unsigned long*, void* (*)(void*), void*) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/support/pthread.h:182:10 (bitcoind+0x1c790c) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#2](/bitcoin-bitcoin/2/) std::__1::thread::thread<void (&)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const (&) [10], AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7, 0>(void (&)(std::__1::basic_string_view<char, std::__1::char_traits<char>>, std::__1::function<void ()>), char const (&) [10], AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_7&&) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:218:14 (bitcoind+0x1c790c)
[#3](/bitcoin-bitcoin/3/) AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./init.cpp:1364:34 (bitcoind+0x1c790c)
[#4](/bitcoin-bitcoin/4/) AppInit(node::NodeContext&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:237:43 (bitcoind+0x1b1168) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#5](/bitcoin-bitcoin/5/) main /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:283:10 (bitcoind+0x1b1168)
Thread T16 'b-httpworker.13' (tid=17216, running) created by main thread at:
[#0](/bitcoin-bitcoin/0/) pthread_create <null> (bitcoind+0x11dbb0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#1](/bitcoin-bitcoin/1/) std::__1::__libcpp_thread_create[abi:ne200100](unsigned long*, void* (*)(void*), void*) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/support/pthread.h:182:10 (bitcoind+0x629364) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#2](/bitcoin-bitcoin/2/) std::__1::thread::thread<void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&, 0>(void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__thread/thread.h:218:14 (bitcoind+0x629364)
[#3](/bitcoin-bitcoin/3/) std::__1::thread* std::__1::construct_at[abi:ne200100]<std::__1::thread, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&, std::__1::thread*>(std::__1::thread*, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__memory/construct_at.h:40:49 (bitcoind+0x6213f0) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#4](/bitcoin-bitcoin/4/) std::__1::thread* std::__1::__construct_at[abi:ne200100]<std::__1::thread, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&, std::__1::thread*>(std::__1::thread*, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__memory/construct_at.h:48:10 (bitcoind+0x6213f0)
[#5](/bitcoin-bitcoin/5/) void std::__1::allocator_traits<std::__1::allocator<std::__1::thread>>::construct[abi:ne200100]<std::__1::thread, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&, void, 0>(std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__memory/allocator_traits.h:318:5 (bitcoind+0x6213f0)
[#6](/bitcoin-bitcoin/6/) void std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread>>::__construct_one_at_end[abi:ne200100]<void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&>(void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__vector/vector.h:742:5 (bitcoind+0x6213f0)
[#7](/bitcoin-bitcoin/7/) std::__1::thread& std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread>>::emplace_back<void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int&>(void (&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&) /usr/lib/llvm-20/bin/../include/c++/v1/__vector/vector.h:1133:5 (bitcoind+0x6213f0)
[#8](/bitcoin-bitcoin/8/) StartHTTPServer() /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./httpserver.cpp:508:31 (bitcoind+0x6213f0)
[#9](/bitcoin-bitcoin/9/) AppInitServers(node::NodeContext&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./init.cpp:720:5 (bitcoind+0x1cf4a8) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#10](/bitcoin-bitcoin/10/) AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./init.cpp:1456:14 (bitcoind+0x1c83cc) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#11](/bitcoin-bitcoin/11/) AppInit(node::NodeContext&) /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:237:43 (bitcoind+0x1b1168) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8)
[#12](/bitcoin-bitcoin/12/) main /ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/src/./bitcoind.cpp:283:10 (bitcoind+0x1b1168)
SUMMARY: ThreadSanitizer: data race (/ci_container_base/ci/scratch/build-aarch64-unknown-linux-gnu/bin/bitcoind+0x1af774) (BuildId: b2fa3bc40a41b9880f72bdbcb3cd045b97456fe8) in operator delete(void*, unsigned long)
==================
node0 stderr Error: Invalid -wallet path 'w8_symlink'. -wallet path should point to a directory where wallet.dat and database/log.?????????? files can be stored, a location where such a directory could be created, or (for backwards compatibility) the name of an existing data file in -walletdir ("/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/node0/regtest/wallets")
node0 stderr Error: Specified -walletdir "debug.log" is not a directory
node0 stderr Error: Specified -walletdir "/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20250725_103610/wallet_multiwallet_242/node0/regtest/wallets/notadir" is not a directory
node0 stderr Error: Specified -walletdir "wallets" is a relative path
node0 stderr Error: Specified -walletdir "bad" does not exist
node0 stderr Warning: Ignoring duplicate -wallet w1.
node0 stderr Error: Specified -walletdir "wallets" does not exist
node0 stderr Error: Error parsing command line arguments: Invalid parameter -upgradewallet
node1 stderr Error: SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?
</details>
alexanderwiederin referenced this in commit 9997c3d993 on Jul 25, 2025
pinheadmz
commented at 3:43 PM on July 25, 2025:
member
I'm unable to reproduce so far building master at 6cdc5a90cffe9ced4ec50d2028c9896d25a9cb6a
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-08-01 18:51 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me