There is an increase in intermittent issues in the TSan task. The increase correlates with Ubuntu Jammy’s bump of clang
from clang-13
to clang-14
.
Temporarily work around that.
There is an increase in intermittent issues in the TSan task. The increase correlates with Ubuntu Jammy’s bump of clang
from clang-13
to clang-14
.
Temporarily work around that.
0ThreadSanitizer: CHECK failed: sanitizer_common.h:494 "((i)) < ((size_))" (0xffffffff, 0x1a) (tid=143618)
1 [#0](/bitcoin-bitcoin/0/) __tsan::CheckUnwind() <null> (bitcoind+0x120582) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
2 [#1](/bitcoin-bitcoin/1/) __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) <null> (bitcoind+0xa29c4) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
3 [#2](/bitcoin-bitcoin/2/) __tsan::ScopedReportBase::AddLocation(unsigned long, unsigned long) <null> (bitcoind+0x131bee) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
4 [#3](/bitcoin-bitcoin/3/) __tsan::ReportRace(__tsan::ThreadState*, __tsan::RawShadow*, __tsan::Shadow, __tsan::Shadow, unsigned long) <null> (bitcoind+0x1341ad) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
5 [#4](/bitcoin-bitcoin/4/) __tsan::FdClose(__tsan::ThreadState*, unsigned long, int, bool) <null> (bitcoind+0xb8565) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
6 [#5](/bitcoin-bitcoin/5/) closedir <null> (bitcoind+0xc1f35) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
7 [#6](/bitcoin-bitcoin/6/) __os_dirlist <null> (bitcoind+0x9d8884) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
8 [#7](/bitcoin-bitcoin/7/) __env_remove_env <null> (bitcoind+0x9b6e71) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
9 [#8](/bitcoin-bitcoin/8/) __env_open <null> (bitcoind+0x9b3527) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
10 [#9](/bitcoin-bitcoin/9/) DbEnv::open(char const*, unsigned int, int) <null> (bitcoind+0x985105) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
11 [#10](/bitcoin-bitcoin/10/) wallet::BerkeleyEnvironment::Open(bilingual_str&) src/./src/wallet/bdb.cpp:161:22 (bitcoind+0x67e6e1) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
12 [#11](/bitcoin-bitcoin/11/) wallet::BerkeleyDatabase::Verify(bilingual_str&) src/./src/wallet/bdb.cpp:268:15 (bitcoind+0x680813) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
13 [#12](/bitcoin-bitcoin/12/) wallet::MakeBerkeleyDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/./src/wallet/bdb.cpp:843:32 (bitcoind+0x687d72) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
14 [#13](/bitcoin-bitcoin/13/) wallet::MakeDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/./src/wallet/walletdb.cpp:1176:12 (bitcoind+0x658ed7) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
15 [#14](/bitcoin-bitcoin/14/) wallet::MakeWalletDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/./src/wallet/wallet.cpp:2671:12 (bitcoind+0x60b77b) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
16 [#15](/bitcoin-bitcoin/15/) wallet::(anonymous namespace)::LoadWalletInternal(wallet::WalletContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str> >&) src/./src/wallet/wallet.cpp:222:52 (bitcoind+0x608b9d) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
17 [#16](/bitcoin-bitcoin/16/) wallet::LoadWallet(wallet::WalletContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str> >&) src/./src/wallet/wallet.cpp:258:19 (bitcoind+0x608b9d)
18 [#17](/bitcoin-bitcoin/17/) wallet::loadwallet()::$_3::operator()(RPCHelpMan const&, JSONRPCRequest const&) const src/./src/wallet/rpc/wallet.cpp:227:45 (bitcoind+0x5b49eb) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
19 [#18](/bitcoin-bitcoin/18/) decltype(static_cast<wallet::loadwallet()::$_3&>(fp)(static_cast<RPCHelpMan const&>(fp0), static_cast<JSONRPCRequest const&>(fp0))) std::__1::__invoke<wallet::loadwallet()::$_3&, RPCHelpMan const&, JSONRPCRequest const&>(wallet::loadwallet()::$_3&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x5b49eb)
20 [#19](/bitcoin-bitcoin/19/) UniValue std::__1::__invoke_void_return_wrapper<UniValue, false>::__call<wallet::loadwallet()::$_3&, RPCHelpMan const&, JSONRPCRequest const&>(wallet::loadwallet()::$_3&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x5b49eb)
21 [#20](/bitcoin-bitcoin/20/) std::__1::__function::__alloc_func<wallet::loadwallet()::$_3, std::__1::allocator<wallet::loadwallet()::$_3>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:180:16 (bitcoind+0x5b49eb)
22 [#21](/bitcoin-bitcoin/21/) std::__1::__function::__func<wallet::loadwallet()::$_3, std::__1::allocator<wallet::loadwallet()::$_3>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:354:12 (bitcoind+0x5b49eb)
23 [#22](/bitcoin-bitcoin/22/) std::__1::__function::__value_func<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:507:16 (bitcoind+0x7e9924) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
24 [#23](/bitcoin-bitcoin/23/) std::__1::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:1184:12 (bitcoind+0x7e9924)
25 [#24](/bitcoin-bitcoin/24/) RPCHelpMan::HandleRequest(JSONRPCRequest const&) const src/./src/rpc/util.cpp:586:26 (bitcoind+0x7e9924)
26 [#25](/bitcoin-bitcoin/25/) 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 src/./rpc/server.h:109:91 (bitcoind+0x32d827) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
27 [#26](/bitcoin-bitcoin/26/) decltype(static_cast<CRPCCommand::CRPCCommand(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>(fp)(static_cast<JSONRPCRequest const&>(fp0), static_cast<UniValue&>(fp0), static_cast<bool>(fp0))) std::__1::__invoke<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-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x32d827)
28 [#27](/bitcoin-bitcoin/27/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call<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-14/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x32d827)
29 [#28](/bitcoin-bitcoin/28/) 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()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:180:16 (bitcoind+0x32d827)
30 [#29](/bitcoin-bitcoin/29/) 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-14/bin/../include/c++/v1/__functional/function.h:354:12 (bitcoind+0x32d827)
31 [#30](/bitcoin-bitcoin/30/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:507:16 (bitcoind+0x57b652) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
32 [#31](/bitcoin-bitcoin/31/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:1184:12 (bitcoind+0x57b652)
33 [#32](/bitcoin-bitcoin/32/) wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const src/./src/wallet/interfaces.cpp:529:24 (bitcoind+0x57b652)
34 [#33](/bitcoin-bitcoin/33/) decltype(static_cast<wallet::(anonymous namespace)::WalletLoaderImpl::registerRpcs()::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>(fp)(static_cast<JSONRPCRequest const&>(fp0), static_cast<UniValue&>(fp0), static_cast<bool>(fp0))) std::__1::__invoke<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-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x57b652)
35 [#34](/bitcoin-bitcoin/34/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call<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-14/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x57b652)
36 [#35](/bitcoin-bitcoin/35/) 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()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:180:16 (bitcoind+0x57b652)
37 [#36](/bitcoin-bitcoin/36/) 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-14/bin/../include/c++/v1/__functional/function.h:354:12 (bitcoind+0x57b652)
38 [#37](/bitcoin-bitcoin/37/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:507:16 (bitcoind+0x261376) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
39 [#38](/bitcoin-bitcoin/38/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:1184:12 (bitcoind+0x261376)
40 [#39](/bitcoin-bitcoin/39/) node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const src/./src/node/interfaces.cpp:421:24 (bitcoind+0x261376)
41 [#40](/bitcoin-bitcoin/40/) decltype(static_cast<node::(anonymous namespace)::RpcHandlerImpl::RpcHandlerImpl(CRPCCommand const&)::'lambda'(JSONRPCRequest const&, UniValue&, bool)&>(fp)(static_cast<JSONRPCRequest const&>(fp0), static_cast<UniValue&>(fp0), static_cast<bool>(fp0))) std::__1::__invoke<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-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x261376)
42 [#41](/bitcoin-bitcoin/41/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call<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-14/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x261376)
43 [#42](/bitcoin-bitcoin/42/) 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()(JSONRPCRequest const&, UniValue&, bool&&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:180:16 (bitcoind+0x261376)
44 [#43](/bitcoin-bitcoin/43/) 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-14/bin/../include/c++/v1/__functional/function.h:354:12 (bitcoind+0x261376)
45 [#44](/bitcoin-bitcoin/44/) std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:507:16 (bitcoind+0x40f1af) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
46 [#45](/bitcoin-bitcoin/45/) std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:1184:12 (bitcoind+0x40f1af)
47 [#46](/bitcoin-bitcoin/46/) ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) src/./src/rpc/server.cpp:480:20 (bitcoind+0x40f1af)
48 [#47](/bitcoin-bitcoin/47/) ExecuteCommands(std::__1::vector<CRPCCommand const*, std::__1::allocator<CRPCCommand const*> > const&, JSONRPCRequest const&, UniValue&) src/./src/rpc/server.cpp:444:13 (bitcoind+0x40f1af)
49 [#48](/bitcoin-bitcoin/48/) CRPCTable::execute(JSONRPCRequest const&) const src/./src/rpc/server.cpp:464:13 (bitcoind+0x40ee20) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
50 [#49](/bitcoin-bitcoin/49/) HTTPReq_JSONRPC(std::__1::any const&, HTTPRequest*) src/./src/httprpc.cpp:202:40 (bitcoind+0x526ecc) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
51 [#50](/bitcoin-bitcoin/50/) StartHTTPRPC(std::__1::any const&)::$_0::operator()(HTTPRequest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const src/./src/httprpc.cpp:298:80 (bitcoind+0x526ecc)
52 [#51](/bitcoin-bitcoin/51/) decltype(static_cast<StartHTTPRPC(std::__1::any const&)::$_0&>(fp)(static_cast<HTTPRequest*>(fp0), static_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(fp0))) std::__1::__invoke<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-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x526ecc)
53 [#52](/bitcoin-bitcoin/52/) bool std::__1::__invoke_void_return_wrapper<bool, false>::__call<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-14/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x526ecc)
54 [#53](/bitcoin-bitcoin/53/) 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()(HTTPRequest*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /usr/lib/llvm-14/bin/../include/c++/v1/__functional/function.h:180:16 (bitcoind+0x526ecc)
55 [#54](/bitcoin-bitcoin/54/) 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-14/bin/../include/c++/v1/__functional/function.h:354:12 (bitcoind+0x526ecc)
56 [#55](/bitcoin-bitcoin/55/) std::__1::__function::__value_func<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-14/bin/../include/c++/v1/__functional/function.h:507:16 (bitcoind+0x534e90) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
57 [#56](/bitcoin-bitcoin/56/) 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-14/bin/../include/c++/v1/__functional/function.h:1184:12 (bitcoind+0x534e90)
58 [#57](/bitcoin-bitcoin/57/) HTTPWorkItem::operator()() src/./src/httpserver.cpp:54:9 (bitcoind+0x534e90)
59 [#58](/bitcoin-bitcoin/58/) WorkQueue<HTTPClosure>::Run() src/./src/httpserver.cpp:112:13 (bitcoind+0x5374d3) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
60 [#59](/bitcoin-bitcoin/59/) HTTPWorkQueueRun(WorkQueue<HTTPClosure>*, int) src/./src/httpserver.cpp:342:12 (bitcoind+0x52f08a) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
61 [#60](/bitcoin-bitcoin/60/) decltype(static_cast<void (*>(fp)(static_cast<WorkQueue<HTTPClosure>*>(fp0), static_cast<int>(fp0))) std::__1::__invoke<void (*)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*, int>(void (*&&)(WorkQueue<HTTPClosure>*, int), WorkQueue<HTTPClosure>*&&, int&&) /usr/lib/llvm-14/bin/../include/c++/v1/type_traits:3640:23 (bitcoind+0x538065) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
62 [#61](/bitcoin-bitcoin/61/) void std::__1::__thread_execute<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-14/bin/../include/c++/v1/thread:282:5 (bitcoind+0x538065)
63 [#62](/bitcoin-bitcoin/62/) void* std::__1::__thread_proxy<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-14/bin/../include/c++/v1/thread:293:5 (bitcoind+0x538065)
64 [#63](/bitcoin-bitcoin/63/) __tsan_thread_start_func <null> (bitcoind+0xbc448) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
65 [#64](/bitcoin-bitcoin/64/) <null> <null> (libc.so.6+0x94b42) (BuildId: 89c3cb85f9e55046776471fed05ec441581d1969)
66 [#65](/bitcoin-bitcoin/65/) <null> <null> (libc.so.6+0x1269ff) (BuildId: 89c3cb85f9e55046776471fed05ec441581d1969)
ACK fa43933e3b3f8bd2992340bdd744fdab680565f8, I have reviewed the code and it looks OK, I agree it can be merged.
I assume this change should be backported to the 23.x and 22.x branches.