Skip to content

Conversation

@maflcko
Copy link
Member

@maflcko maflcko commented Mar 15, 2022

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.

@maflcko
Copy link
Member Author

maflcko commented Mar 15, 2022

Internal crash for reference
ThreadSanitizer: CHECK failed: sanitizer_common.h:494 "((i)) < ((size_))" (0xffffffff, 0x1a) (tid=143618)
    #0 __tsan::CheckUnwind() <null> (bitcoind+0x120582) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) <null> (bitcoind+0xa29c4) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #2 __tsan::ScopedReportBase::AddLocation(unsigned long, unsigned long) <null> (bitcoind+0x131bee) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #3 __tsan::ReportRace(__tsan::ThreadState*, __tsan::RawShadow*, __tsan::Shadow, __tsan::Shadow, unsigned long) <null> (bitcoind+0x1341ad) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #4 __tsan::FdClose(__tsan::ThreadState*, unsigned long, int, bool) <null> (bitcoind+0xb8565) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #5 closedir <null> (bitcoind+0xc1f35) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #6 __os_dirlist <null> (bitcoind+0x9d8884) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #7 __env_remove_env <null> (bitcoind+0x9b6e71) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #8 __env_open <null> (bitcoind+0x9b3527) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #9 DbEnv::open(char const*, unsigned int, int) <null> (bitcoind+0x985105) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #10 wallet::BerkeleyEnvironment::Open(bilingual_str&) src/./src/wallet/bdb.cpp:161:22 (bitcoind+0x67e6e1) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #11 wallet::BerkeleyDatabase::Verify(bilingual_str&) src/./src/wallet/bdb.cpp:268:15 (bitcoind+0x680813) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #12 wallet::MakeBerkeleyDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/./src/wallet/bdb.cpp:843:32 (bitcoind+0x687d72) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #13 wallet::MakeDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/./src/wallet/walletdb.cpp:1176:12 (bitcoind+0x658ed7) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #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)
    #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)
    #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)
    #17 wallet::loadwallet()::$_3::operator()(RPCHelpMan const&, JSONRPCRequest const&) const src/./src/wallet/rpc/wallet.cpp:227:45 (bitcoind+0x5b49eb) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #24 RPCHelpMan::HandleRequest(JSONRPCRequest const&) const src/./src/rpc/util.cpp:586:26 (bitcoind+0x7e9924)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #46 ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) src/./src/rpc/server.cpp:480:20 (bitcoind+0x40f1af)
    #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)
    #48 CRPCTable::execute(JSONRPCRequest const&) const src/./src/rpc/server.cpp:464:13 (bitcoind+0x40ee20) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #49 HTTPReq_JSONRPC(std::__1::any const&, HTTPRequest*) src/./src/httprpc.cpp:202:40 (bitcoind+0x526ecc) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #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)
    #57 HTTPWorkItem::operator()() src/./src/httpserver.cpp:54:9 (bitcoind+0x534e90)
    #58 WorkQueue<HTTPClosure>::Run() src/./src/httpserver.cpp:112:13 (bitcoind+0x5374d3) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #59 HTTPWorkQueueRun(WorkQueue<HTTPClosure>*, int) src/./src/httpserver.cpp:342:12 (bitcoind+0x52f08a) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #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)
    #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)
    #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)
    #63 __tsan_thread_start_func <null> (bitcoind+0xbc448) (BuildId: 337970ff7135e4c1044b5f6473d0f7f108230cee)
    #64 <null> <null> (libc.so.6+0x94b42) (BuildId: 89c3cb85f9e55046776471fed05ec441581d1969)
    #65 <null> <null> (libc.so.6+0x1269ff) (BuildId: 89c3cb85f9e55046776471fed05ec441581d1969)


@maflcko
Copy link
Member Author

maflcko commented Mar 15, 2022

I tested this locally and it worked

@DrahtBot DrahtBot added the Tests label Mar 15, 2022
Copy link
Member

@hebasto hebasto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK fa43933, 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.

@maflcko maflcko added this to the 23.0 milestone Mar 16, 2022
@maflcko maflcko merged commit 7606512 into bitcoin:master Mar 16, 2022
@maflcko maflcko deleted the 2203-tsan-clang-bug-🎵 branch March 16, 2022 07:27
sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Mar 16, 2022
@jonatack
Copy link
Member

jonatack commented Mar 28, 2022

Backported to v23.0 in #24512.

@jonatack jonatack mentioned this pull request Mar 28, 2022
jonatack pushed a commit to jonatack/bitcoin that referenced this pull request Mar 31, 2022
fanquake added a commit that referenced this pull request Mar 31, 2022
174af33 util: Add inotify_rm_watch to syscall sandbox (AllowFileSystem) (Hennadii Stepanov)
ded10fe build: Fix Boost.Process test for Boost 1.78 (Hennadii Stepanov)
26c2f23 build: Fix Boost.Process detection on macOS arm64 (Hennadii Stepanov)
85f85c7 util: add linkat to syscall sandbox (AllowFileSystem) (fanquake)
eaa0419 contrib: fix signet miner (sighash mismatch) (Sebastian Falbesoner)
235b042 rpc: Exclude descriptor when address is excluded (MarcoFalke)
b05a59b ci: Temporarily use clang-13 to work around clang-14 TSan bug (MarcoFalke)
65b9667 doc, init: add links to doc/cjdns.md (Jon Atack)
7a553d4 doc: update i2p.md with cjdns, improve local addresses section (Jon Atack)
4148396 doc: update tor.md with cjdns and getnodeaddresses, fix tor grep, (Jon Atack)
4690e8a doc: create initial doc/cjdns.md for cjdns how-to documentation (Jon Atack)
5d24f61 Clarify in -maxtimeadjustment that only outbound peers influence time data (Jon Atack)
b1646f1 test: set segwit height back to 0 on regtest (Martin Zumsande)
ef6a37b rpc: rename getdeploymentinfo status-next to status_next (Jon Atack)
2a6fcf9 init, doc: improve -onlynet help and tor/i2p documentation (Jon Atack)

Pull request description:

  Backport the following to 23.x:

  - #24468
  - #24528
  - #24527
  - #24609
  - #24555
  - #24663
  - #24572
  - #24636
  - #24553
  - #24659
  - #24521
  - #24523
  - #24690
  - #24710

  Possibly also:
  - #24579
  - #24691

ACKs for top commit:
  laanwj:
    List-of-commits ACK 174af33, I think we should merge this and move forward with rc3..
  hebasto:
    ACK 174af33

Tree-SHA512: 5a493e1652b780b527767d6ca9e67012abd2fa5573496e85e0d8aa4bed3eb332bfcd72610b8dfb954ff274d42450623233c96c479de2085b9c8344ba5abf1935
@maflcko
Copy link
Member Author

maflcko commented Jun 8, 2022

Removed from backport due to #25304

maflcko pushed a commit to bitcoin-core/gui that referenced this pull request Dec 29, 2022
faa00ca ci: Use clang-15 in tsan task (MarcoFalke)

Pull request description:

  Generally it is best to use the latest clang version for sanitizers, because it comes with the most features and bugfixes.

  So bump to clang-15, the latest release, for the tsan task.

  The task was using clang-13 (instead of 14) due to a bug, see bitcoin/bitcoin#24572 (comment). Bumping to 15 will hopefully fix this bug, as well as bitcoin/bitcoin#26759 (comment)

ACKs for top commit:
  hebasto:
    ACK faa00ca

Tree-SHA512: adb2386bb9615a3e1185e0624b0b68cd2738309530185819714a26e63bdf1c79461c4b4d3aa9cbe2fe08cc412349d7453f192abbbe9fb5adca74cf4b148ae7b7
fanquake added a commit to bitcoin-core/gui that referenced this pull request Mar 28, 2023
faf4aca ci: Use TSan new runtime (llvm-16, take 3) (MarcoFalke)

Pull request description:

  The previous two attempts failed:
  * llvm-14: Failed in bitcoin/bitcoin#24572
  * llvm-15: Failed in bitcoin/bitcoin#26775

  However, now that the bug is known and fixed, it should be good to go. See also bitcoin/bitcoin#26775 (comment)

ACKs for top commit:
  fanquake:
    ACK faf4aca - I still see [this](bitcoin/bitcoin#27298 (comment)) failure on aarch64, but that isn't really a regression, as running this tests was already broken for me. I'll open a separate issue, and we can follow up.

Tree-SHA512: 372b53c4d42ca7f527dae4a2b5bc5ab33c816930daf7a3479d20ea7749159a0b19cfd8d76244b95b03130e4a3d12ddbbb74668b8f7e9fc272cf1084f53b7ff9b
sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Mar 28, 2023
faf4aca ci: Use TSan new runtime (llvm-16, take 3) (MarcoFalke)

Pull request description:

  The previous two attempts failed:
  * llvm-14: Failed in bitcoin#24572
  * llvm-15: Failed in bitcoin#26775

  However, now that the bug is known and fixed, it should be good to go. See also bitcoin#26775 (comment)

ACKs for top commit:
  fanquake:
    ACK faf4aca - I still see [this](bitcoin#27298 (comment)) failure on aarch64, but that isn't really a regression, as running this tests was already broken for me. I'll open a separate issue, and we can follow up.

Tree-SHA512: 372b53c4d42ca7f527dae4a2b5bc5ab33c816930daf7a3479d20ea7749159a0b19cfd8d76244b95b03130e4a3d12ddbbb74668b8f7e9fc272cf1084f53b7ff9b
@bitcoin bitcoin locked and limited conversation to collaborators Jun 8, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants