Skip to content

Conversation

hebasto
Copy link
Member

@hebasto hebasto commented Dec 27, 2022

The removed suppression seems no needed.

I cannot point the exact commit/PR which makes this change possible.

@DrahtBot
Copy link
Contributor

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.
A summary of reviews will appear here.

@DrahtBot DrahtBot added the Tests label Dec 27, 2022
@maflcko
Copy link
Member

maflcko commented Dec 28, 2022

Yeah, could have been fixed when switching the clang version from

to

@hebasto
Copy link
Member Author

hebasto commented Dec 28, 2022

Yeah, could have been fixed when switching the clang version from

to

FWIW, I've checked the TSan task with the focal image before submitting this PR. There were no issues. Perhaps a fix was backported to focal's clang-10.

@hebasto hebasto marked this pull request as ready for review December 28, 2022 09:58
@maflcko
Copy link
Member

maflcko commented Dec 28, 2022

lgtm. The failure rate was low for this one, so even if it still happens, it will take some time to reproduce. I guess this can be merged now and reverted later if it still happens?

maflcko pushed a commit that referenced this pull request Dec 28, 2022
…ession

a3f5e54 test: Drop no longer needed `race:epoll_ctl` TSan suppression (Hennadii Stepanov)

Pull request description:

  The removed suppression seems no needed.

  I cannot point the exact commit/PR which makes this change possible.

Top commit has no ACKs.

Tree-SHA512: 8ee79cbdb2bc62796d72c69be4a818379132eae47be33951e8b9d224b049ff77e867004801c7cb0cc564a5374f318dafd9142b5231e9bd428f80acc75253933e
@DrahtBot
Copy link
Contributor

🐙 This pull request conflicts with the target branch and needs rebase.

@hebasto
Copy link
Member Author

hebasto commented Dec 28, 2022

Merged.

@hebasto hebasto closed this Dec 28, 2022
@hebasto hebasto deleted the 221227-epoll branch December 28, 2022 18:22
@fanquake
Copy link
Member

Perhaps a fix was backported to focal's clang-10.

The last change to the Focal LLVM 10 toolchain package was prior to this suppression being added: https://changelogs.ubuntu.com/changelogs/pool/main/l/llvm-toolchain-10/llvm-toolchain-10_10.0.0-4ubuntu1/changelog.

@maflcko
Copy link
Member

maflcko commented Dec 29, 2022

https://cirrus-ci.com/task/6614284264800256?logs=ci#L3512

interface_bitcoin_cli.py --legacy-wallet               | ✖ Failed  | 19 s
ALL                                                    | ✖ Failed  | 3147 s (accumulated) 
Runtime: 346 s
==================
WARNING: ThreadSanitizer: data race (pid=37922)
  Write of size 8 at 0x7ba000000150 by thread T26 (mutexes: write M132180):
    #0 closedir <null> (bitcoind+0xd9e28)
    #1 leveldb::(anonymous namespace)::PosixEnv::GetChildren(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*) src/leveldb/util/env_posix.cc:599:5 (bitcoind+0xa3f916)
    #2 leveldb::DBImpl::DeleteObsoleteFiles() src/leveldb/db/db_impl.cc:237:9 (bitcoind+0xa090a5)
    #3 leveldb::DBImpl::BackgroundCompaction() src/leveldb/db/db_impl.cc:752:5 (bitcoind+0xa0ce5d)
    #4 leveldb::DBImpl::BackgroundCall() src/leveldb/db/db_impl.cc:687:5 (bitcoind+0xa0c7bf)
    #5 leveldb::DBImpl::BGWork(void*) src/leveldb/db/db_impl.cc:676:34 (bitcoind+0xa0c6fb)
    #6 leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadMain() src/leveldb/util/env_posix.cc:830:5 (bitcoind+0xa438b3)
    #7 leveldb::(anonymous namespace)::PosixEnv::BackgroundThreadEntryPoint(leveldb::(anonymous namespace)::PosixEnv*) src/leveldb/util/env_posix.cc:736:10 (bitcoind+0xa438b3)
    #8 decltype(static_cast<void (*>(fp)(static_cast<leveldb::(anonymous namespace)::PosixEnv*>(fp0))) std::__1::__invoke<void (*)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*>(void (*&&)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*&&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0xa43ab0)
    #9 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*, 2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*>&, std::__1::__tuple_indices<2ul>) /usr/lib/llvm-13/bin/../include/c++/v1/thread:280:5 (bitcoind+0xa43ab0)
    #10 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 (*)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*> >(void*) /usr/lib/llvm-13/bin/../include/c++/v1/thread:291:5 (bitcoind+0xa43ab0)
  Previous read of size 8 at 0x7ba000000150 by thread T17 (mutexes: write M131565):
    #0 epoll_ctl <null> (bitcoind+0xda1a5)
    #1 epoll_apply_one_change epoll.c (bitcoind+0xb76c43)
    #2 decltype(static_cast<bool (*>(fp)(static_cast<event_base*>(fp0))) std::__1::__invoke<bool (*)(event_base*), event_base*>(bool (*&&)(event_base*), event_base*&&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0x582500)
    #3 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, bool (*)(event_base*), event_base*, 2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, bool (*)(event_base*), event_base*>&, std::__1::__tuple_indices<2ul>) /usr/lib/llvm-13/bin/../include/c++/v1/thread:280:5 (bitcoind+0x582500)
    #4 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, bool (*)(event_base*), event_base*> >(void*) /usr/lib/llvm-13/bin/../include/c++/v1/thread:291:5 (bitcoind+0x582500)
  Location is file descriptor 21 created by main thread at:
    [failed to restore the stack]
  Mutex M132180 (0x7b580000c0c0) created at:
    #0 pthread_mutex_lock <null> (bitcoind+0xf1638)
    #1 std::__1::mutex::lock() <null> (libc++.so.1+0x49f35)
    #2 CDBWrapper::CDBWrapper(fs::path const&, unsigned long, bool, bool, bool) src/dbwrapper.cpp:156:30 (bitcoind+0x55725f)
    #3 std::__1::__unique_if<CDBWrapper>::__unique_single std::__1::make_unique<CDBWrapper, fs::path&, unsigned long&, bool&, bool, bool>(fs::path&, unsigned long&, bool&, bool&&, bool&&) /usr/lib/llvm-13/bin/../include/c++/v1/__memory/unique_ptr.h:728:32 (bitcoind+0x474f0e)
    #4 CCoinsViewDB::ResizeCache(unsigned long) src/txdb.cpp:86:16 (bitcoind+0x474f0e)
    #5 Chainstate::ResizeCoinsCaches(unsigned long, unsigned long) src/validation.cpp:4761:15 (bitcoind+0x4e095c)
    #6 ChainstateManager::MaybeRebalanceCaches() src/validation.cpp:5223:27 (bitcoind+0x4e4957)
    #7 node::LoadChainstate(ChainstateManager&, node::CacheSizes const&, node::ChainstateLoadOptions const&) src/node/chainstate.cpp:168:14 (bitcoind+0x265475)
    #8 AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_4::operator()() const src/init.cpp:1501:61 (bitcoind+0x16ad1b)
    #9 auto AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_3::operator()<AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_4>(AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*)::$_4&&) const src/init.cpp:1495:24 (bitcoind+0x16ad1b)
    #10 AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) src/init.cpp:1501:32 (bitcoind+0x163fa0)
    #11 AppInit(node::NodeContext&, int, char**) src/bitcoind.cpp:234:43 (bitcoind+0x14ade9)
    #12 main src/bitcoind.cpp:278:13 (bitcoind+0x14ade9)
  Mutex M131565 (0x7b0c0001c860) created at:
    #0 pthread_mutex_init <null> (bitcoind+0xd5acf)
    #1 evthread_posix_lock_alloc evthread_pthread.c (bitcoind+0xb5ea5f)
    #2 AppInitServers(node::NodeContext&) src/init.cpp:649:10 (bitcoind+0x169a4c)
    #3 AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) src/init.cpp:1186:14 (bitcoind+0x161035)
    #4 AppInit(node::NodeContext&, int, char**) src/bitcoind.cpp:234:43 (bitcoind+0x14ade9)
    #5 main src/bitcoind.cpp:278:13 (bitcoind+0x14ade9)
  Thread T26 (tid=38391, running) created by thread T18 at:
    #0 pthread_create <null> (bitcoind+0xd435d)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /usr/lib/llvm-13/bin/../include/c++/v1/__threading_support:443:10 (bitcoind+0xa40653)
    #2 std::__1::thread::thread<void (&)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*, void>(void (&)(leveldb::(anonymous namespace)::PosixEnv*), leveldb::(anonymous namespace)::PosixEnv*&&) /usr/lib/llvm-13/bin/../include/c++/v1/thread:307:16 (bitcoind+0xa40653)
    #3 leveldb::(anonymous namespace)::PosixEnv::Schedule(void (*)(void*), void*) src/leveldb/util/env_posix.cc:802:17 (bitcoind+0xa40653)
    #4 leveldb::DBImpl::MaybeScheduleCompaction() src/leveldb/db/db_impl.cc:671:11 (bitcoind+0xa0fd22)
    #5 leveldb::DBImpl::Get(leveldb::ReadOptions const&, leveldb::Slice const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) src/leveldb/db/db_impl.cc:1150:5 (bitcoind+0xa0fd22)
    #6 bool CDBWrapper::Read<(anonymous namespace)::CoinEntry, Coin>((anonymous namespace)::CoinEntry const&, Coin&) const src/./dbwrapper.h:256:39 (bitcoind+0x4750e6)
    #7 CCoinsViewDB::GetCoin(COutPoint const&, Coin&) const src/txdb.cpp:92:18 (bitcoind+0x4750e6)
    #8 CCoinsViewBacked::GetCoin(COutPoint const&, Coin&) const src/coins.cpp:26:92 (bitcoind+0x8306a4)
    #9 CCoinsViewErrorCatcher::GetCoin(COutPoint const&, Coin&) const src/coins.cpp:297:34 (bitcoind+0x8306a4)
    #10 CCoinsViewCache::FetchCoin(COutPoint const&) const src/coins.cpp:46:16 (bitcoind+0x82dda3)
    #11 CCoinsViewCache::GetCoin(COutPoint const&, Coin&) const src/coins.cpp:59:36 (bitcoind+0x82def0)
    #12 CCoinsViewCache::FetchCoin(COutPoint const&) const src/coins.cpp:46:16 (bitcoind+0x82dda3)
    #13 CCoinsViewCache::HaveCoin(COutPoint const&) const src/coins.cpp:160:36 (bitcoind+0x82f452)
    #14 Chainstate::ConnectBlock(CBlock const&, BlockValidationState&, CBlockIndex*, CCoinsViewCache&, bool) src/validation.cpp:2148:26 (bitcoind+0x4c0e44)
    #15 TestBlockValidity(BlockValidationState&, CChainParams const&, Chainstate&, CBlock const&, CBlockIndex*, std::__1::function<std::__1::chrono::time_point<NodeClock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l> > > ()> const&, bool, bool) src/validation.cpp:3957:21 (bitcoind+0x4d86b9)
    #16 node::BlockAssembler::CreateNewBlock(CScript const&) src/node/miner.cpp:173:10 (bitcoind+0x5b3b9b)
    #17 generateBlocks(ChainstateManager&, CTxMemPool const&, CScript const&, int, unsigned long) src/rpc/mining.cpp:147:110 (bitcoind+0x398b1d)
    #18 generatetoaddress()::$_3::operator()(RPCHelpMan const&, JSONRPCRequest const&) const src/rpc/mining.cpp:280:12 (bitcoind+0x39885d)
    #19 decltype(static_cast<generatetoaddress()::$_3&>(fp)(static_cast<RPCHelpMan const&>(fp0), static_cast<JSONRPCRequest const&>(fp0))) std::__1::__invoke<generatetoaddress()::$_3&, RPCHelpMan const&, JSONRPCRequest const&>(generatetoaddress()::$_3&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0x39885d)
    #20 UniValue std::__1::__invoke_void_return_wrapper<UniValue, false>::__call<generatetoaddress()::$_3&, RPCHelpMan const&, JSONRPCRequest const&>(generatetoaddress()::$_3&, RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x39885d)
    #21 std::__1::__function::__alloc_func<generatetoaddress()::$_3, std::__1::allocator<generatetoaddress()::$_3>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:171:16 (bitcoind+0x39885d)
    #22 std::__1::__function::__func<generatetoaddress()::$_3, std::__1::allocator<generatetoaddress()::$_3>, UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:345:12 (bitcoind+0x39885d)
    #23 std::__1::__function::__value_func<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (bitcoind+0x8aca4f)
    #24 std::__1::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (bitcoind+0x8aca4f)
    #25 RPCHelpMan::HandleRequest(JSONRPCRequest const&) const src/rpc/util.cpp:582:26 (bitcoind+0x8aca4f)
    #26 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+0x34b017)
    #27 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-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0x34b017)
    #28 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-13/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x34b017)
    #29 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-13/bin/../include/c++/v1/__functional/function.h:171:16 (bitcoind+0x34b017)
    #30 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-13/bin/../include/c++/v1/__functional/function.h:345:12 (bitcoind+0x34b017)
    #31 std::__1::__function::__value_func<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool&&) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:498:16 (bitcoind+0x43e9ef)
    #32 std::__1::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/lib/llvm-13/bin/../include/c++/v1/__functional/function.h:1175:12 (bitcoind+0x43e9ef)
    #33 ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) src/rpc/server.cpp:504:20 (bitcoind+0x43e9ef)
    #34 ExecuteCommands(std::__1::vector<CRPCCommand const*, std::__1::allocator<CRPCCommand const*> > const&, JSONRPCRequest const&, UniValue&) src/rpc/server.cpp:469:13 (bitcoind+0x43e9ef)
    #35 CRPCTable::execute(JSONRPCRequest const&) const src/rpc/server.cpp:489:13 (bitcoind+0x43e660)
    #36 HTTPReq_JSONRPC(std::__1::any const&, HTTPRequest*) src/httprpc.cpp:201:40 (bitcoind+0x570b16)
    #37 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/httprpc.cpp:300:80 (bitcoind+0x570b16)
    #38 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-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0x570b16)
    #39 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-13/bin/../include/c++/v1/__functional/invoke.h:30:16 (bitcoind+0x570b16)
    #40 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-13/bin/../include/c++/v1/__functional/function.h:171:16 (bitcoind+0x570b16)
    #41 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-13/bin/../include/c++/v1/__functional/function.h:345:12 (bitcoind+0x570b16)
    #42 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-13/bin/../include/c++/v1/__functional/function.h:498:16 (bitcoind+0x57f8b0)
    #43 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-13/bin/../include/c++/v1/__functional/function.h:1175:12 (bitcoind+0x57f8b0)
    #44 HTTPWorkItem::operator()() src/httpserver.cpp:56:9 (bitcoind+0x57f8b0)
    #45 WorkQueue<HTTPClosure>::Run() src/httpserver.cpp:111:13 (bitcoind+0x5820f3)
    #46 HTTPWorkQueueRun(WorkQueue<HTTPClosure>*, int) src/httpserver.cpp:340:12 (bitcoind+0x5799ea)
    #47 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-13/bin/../include/c++/v1/type_traits:3918:1 (bitcoind+0x582d65)
    #48 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-13/bin/../include/c++/v1/thread:280:5 (bitcoind+0x582d65)
    #49 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-13/bin/../include/c++/v1/thread:291:5 (bitcoind+0x582d65)
  Thread T17 'b-http' (tid=37941, running) created by main thread at:
    #0 pthread_create <null> (bitcoind+0xd435d)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /usr/lib/llvm-13/bin/../include/c++/v1/__threading_support:443:10 (bitcoind+0x57d88e)
    #2 std::__1::thread::thread<bool (&)(event_base*), event_base*&, void>(bool (&)(event_base*), event_base*&) /usr/lib/llvm-13/bin/../include/c++/v1/thread:307:16 (bitcoind+0x57d88e)
    #3 StartHTTPServer() src/httpserver.cpp:427:21 (bitcoind+0x579546)
    #4 AppInitServers(node::NodeContext&) src/init.cpp:656:5 (bitcoind+0x169b6e)
    #5 AppInitMain(node::NodeContext&, interfaces::BlockAndHeaderTipInfo*) src/init.cpp:1186:14 (bitcoind+0x161035)
    #6 AppInit(node::NodeContext&, int, char**) src/bitcoind.cpp:234:43 (bitcoind+0x14ade9)
    #7 main src/bitcoind.cpp:278:13 (bitcoind+0x14ade9)
SUMMARY: ThreadSanitizer: data race (/tmp/cirrus-ci-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bitcoind+0xd9e28) in closedir
==================

@hebasto
Copy link
Member Author

hebasto commented Dec 29, 2022

lgtm. The failure rate was low for this one, so even if it still happens, it will take some time to reproduce.

Well. It did not take too much time (

@maflcko
Copy link
Member

maflcko commented Dec 29, 2022

I just fail to reproduce locally. Maybe this only happens with a specific kernel version that Cirrus CI uses?

@hebasto
Copy link
Member Author

hebasto commented Dec 29, 2022

I just fail to reproduce locally. Maybe this only happens with a specific kernel version that Cirrus CI uses?

Neither do I.

I'm curious whether llvm/llvm-project@16baf59 fixes the TSan's bug? If so, than this PR must be reverted until using clang-15.

sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Dec 29, 2022
…n suppression

a3f5e54 test: Drop no longer needed `race:epoll_ctl` TSan suppression (Hennadii Stepanov)

Pull request description:

  The removed suppression seems no needed.

  I cannot point the exact commit/PR which makes this change possible.

Top commit has no ACKs.

Tree-SHA512: 8ee79cbdb2bc62796d72c69be4a818379132eae47be33951e8b9d224b049ff77e867004801c7cb0cc564a5374f318dafd9142b5231e9bd428f80acc75253933e
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
@bitcoin bitcoin locked and limited conversation to collaborators Dec 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants