See in this Travis build.
wallet_listtransactions.py | ✓ Passed | 35 s
wallet_zapwallettxes.py | ✓ Passed | 17 s
feature_reindex.py | ✖ Failed | 7 s
ALL | ✖ Failed | 1246 s (accumulated)
Runtime: 386 s
==================
WARNING: ThreadSanitizer: data race (pid=27983)
Read of size 8 at 0x7b0400000ec0 by thread T2 (mutexes: write M131664, write M134):
[#0](/bitcoin-bitcoin/0/) std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>&&, std::__1::tuple<>&&) <null> (bitcoind+0x45e066)
[#1](/bitcoin-bitcoin/1/) BerkeleyBatch::BerkeleyBatch(BerkeleyDatabase&, char const*, bool) <null> (bitcoind+0x457667)
[#2](/bitcoin-bitcoin/2/) CWallet::AddToWallet(std::__1::shared_ptr<CTransaction const>, CWalletTx::Confirmation const&, std::__1::function<bool (CWalletTx&, bool)> const&, bool) <null> (bitcoind+0x5315d2)
[#3](/bitcoin-bitcoin/3/) CWallet::AddToWalletIfInvolvingMe(std::__1::shared_ptr<CTransaction const> const&, CWalletTx::Confirmation, bool) <null> (bitcoind+0x534024)
[#4](/bitcoin-bitcoin/4/) CWallet::blockConnected(CBlock const&, int) <null> (bitcoind+0x5356f3)
[#5](/bitcoin-bitcoin/5/) non-virtual thunk to CWallet::blockConnected(CBlock const&, int) <null> (bitcoind+0x53582a)
[#6](/bitcoin-bitcoin/6/) interfaces::(anonymous namespace)::NotificationsProxy::BlockConnected(std::__1::shared_ptr<CBlock const> const&, CBlockIndex const*) <null> (bitcoind+0x1058d1)
[#7](/bitcoin-bitcoin/7/) std::__1::__function::__func<CMainSignals::BlockConnected(std::__1::shared_ptr<CBlock const> const&, CBlockIndex const*)::$_9, std::__1::allocator<CMainSignals::BlockConnected(std::__1::shared_ptr<CBlock const> const&, CBlockIndex const*)::$_9>, void ()>::operator()() <null> (bitcoind+0x3d2a32)
[#8](/bitcoin-bitcoin/8/) SingleThreadedSchedulerClient::ProcessQueue() <null> (bitcoind+0x630926)
[#9](/bitcoin-bitcoin/9/) std::__1::__function::__func<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*>, std::__1::allocator<std::__1::__bind<void (SingleThreadedSchedulerClient::*)(), SingleThreadedSchedulerClient*> >, void ()>::operator()() <null> (bitcoind+0x632846)
[#10](/bitcoin-bitcoin/10/) CScheduler::serviceQueue() <null> (bitcoind+0x62f7e4)
[#11](/bitcoin-bitcoin/11/) std::__1::__function::__func<AppInitMain(util::Ref const&, NodeContext&)::$_4, std::__1::allocator<AppInitMain(util::Ref const&, NodeContext&)::$_4>, void ()>::operator()() <null> (bitcoind+0x1263ae)
[#12](/bitcoin-bitcoin/12/) void TraceThread<std::__1::function<void ()> >(char const*, std::__1::function<void ()>) <null> (bitcoind+0x12b0ca)
[#13](/bitcoin-bitcoin/13/) boost::detail::thread_data<std::__1::__bind<void (*)(char const*, std::__1::function<void ()>), char const (&) [10], std::__1::function<void ()>&> >::run() <null> (bitcoind+0x1436ad)
[#14](/bitcoin-bitcoin/14/) boost::(anonymous namespace)::thread_proxy(void*) <null> (bitcoind+0x7aed6e)
Previous write of size 8 at 0x7b0400000ec0 by main thread (mutexes: write M131965):
[#0](/bitcoin-bitcoin/0/) std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId> > >::remove(std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, void*>*>) <null> (bitcoind+0x45fe11)
[#1](/bitcoin-bitcoin/1/) BerkeleyDatabase::Flush(bool) <null> (bitcoind+0x45bb8e)
[#2](/bitcoin-bitcoin/2/) CWallet::Flush(bool) <null> (bitcoind+0x52df68)
[#3](/bitcoin-bitcoin/3/) FlushWallets() <null> (bitcoind+0x469f81)
[#4](/bitcoin-bitcoin/4/) interfaces::(anonymous namespace)::WalletClientImpl::flush() <null> (bitcoind+0x4398f1)
[#5](/bitcoin-bitcoin/5/) Shutdown(NodeContext&) <null> (bitcoind+0x10775c)
[#6](/bitcoin-bitcoin/6/) main <null> (bitcoind+0xfd800)
Location is heap block of size 16 at 0x7b0400000ec0 allocated by main thread:
[#0](/bitcoin-bitcoin/0/) operator new(unsigned long) <null> (bitcoind+0xfa3db)
[#1](/bitcoin-bitcoin/1/) std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId> > >::__rehash(unsigned long) <null> (bitcoind+0x45e765)
[#2](/bitcoin-bitcoin/2/) std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId> > >::rehash(unsigned long) <null> (bitcoind+0x45e5a8)
[#3](/bitcoin-bitcoin/3/) std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>&&, std::__1::tuple<>&&) <null> (bitcoind+0x45e39c)
[#4](/bitcoin-bitcoin/4/) BerkeleyBatch::BerkeleyBatch(BerkeleyDatabase&, char const*, bool) <null> (bitcoind+0x457667)
[#5](/bitcoin-bitcoin/5/) CWallet::LoadWallet(bool&) <null> (bitcoind+0x54bc98)
[#6](/bitcoin-bitcoin/6/) CWallet::CreateWalletFromFile(interfaces::Chain&, WalletLocation const&, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str> >&, unsigned long) <null> (bitcoind+0x522305)
[#7](/bitcoin-bitcoin/7/) LoadWallets(interfaces::Chain&, 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> > > > const&) <null> (bitcoind+0x469584)
[#8](/bitcoin-bitcoin/8/) interfaces::(anonymous namespace)::WalletClientImpl::load() <null> (bitcoind+0x439835)
[#9](/bitcoin-bitcoin/9/) AppInitMain(util::Ref const&, NodeContext&) <null> (bitcoind+0x11f1ae)
[#10](/bitcoin-bitcoin/10/) main <null> (bitcoind+0xfd32c)
Mutex M131664 (0x7b580000bb30) created at:
[#0](/bitcoin-bitcoin/0/) pthread_mutex_init <null> (bitcoind+0x6ea4d)
[#1](/bitcoin-bitcoin/1/) std::__1::recursive_mutex::recursive_mutex() <null> (libc++.so.1+0x83583)
[#2](/bitcoin-bitcoin/2/) CWallet::CreateWalletFromFile(interfaces::Chain&, WalletLocation const&, bilingual_str&, std::__1::vector<bilingual_str, std::__1::allocator<bilingual_str> >&, unsigned long) <null> (bitcoind+0x52224c)
[#3](/bitcoin-bitcoin/3/) LoadWallets(interfaces::Chain&, 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> > > > const&) <null> (bitcoind+0x469584)
[#4](/bitcoin-bitcoin/4/) interfaces::(anonymous namespace)::WalletClientImpl::load() <null> (bitcoind+0x439835)
[#5](/bitcoin-bitcoin/5/) AppInitMain(util::Ref const&, NodeContext&) <null> (bitcoind+0x11f1ae)
[#6](/bitcoin-bitcoin/6/) main <null> (bitcoind+0xfd32c)
Mutex M134 (0x55b5331b1640) created at:
[#0](/bitcoin-bitcoin/0/) pthread_mutex_init <null> (bitcoind+0x6ea4d)
[#1](/bitcoin-bitcoin/1/) std::__1::recursive_mutex::recursive_mutex() <null> (libc++.so.1+0x83583)
[#2](/bitcoin-bitcoin/2/) __libc_csu_init <null> (bitcoind+0x957e4c)
Mutex M131965 (0x55b5331ad0a8) created at:
[#0](/bitcoin-bitcoin/0/) pthread_mutex_init <null> (bitcoind+0x6ea4d)
[#1](/bitcoin-bitcoin/1/) std::__1::recursive_mutex::recursive_mutex() <null> (libc++.so.1+0x83583)
[#2](/bitcoin-bitcoin/2/) main <null> (bitcoind+0xfd800)
Thread T2 'b-scheduler' (tid=27986, running) created by main thread at:
[#0](/bitcoin-bitcoin/0/) pthread_create <null> (bitcoind+0x6d4cb)
[#1](/bitcoin-bitcoin/1/) boost::thread::start_thread_noexcept() <null> (bitcoind+0x7aec6d)
[#2](/bitcoin-bitcoin/2/) boost::thread::thread<std::__1::__bind<void (*)(char const*, std::__1::function<void ()>), char const (&) [10], std::__1::function<void ()>&>&>(std::__1::__bind<void (*)(char const*, std::__1::function<void ()>), char const (&) [10], std::__1::function<void ()>&>&) <null> (bitcoind+0x14330b)
[#3](/bitcoin-bitcoin/3/) boost::thread* boost::thread_group::create_thread<std::__1::__bind<void (*)(char const*, std::__1::function<void ()>), char const (&) [10], std::__1::function<void ()>&> >(std::__1::__bind<void (*)(char const*, std::__1::function<void ()>), char const (&) [10], std::__1::function<void ()>&>) <null> (bitcoind+0x12ae5e)
[#4](/bitcoin-bitcoin/4/) AppInitMain(util::Ref const&, NodeContext&) <null> (bitcoind+0x1199bf)
[#5](/bitcoin-bitcoin/5/) main <null> (bitcoind+0xfd32c)
SUMMARY: ThreadSanitizer: data race (/home/travis/build/bitcoin/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bitcoind+0x45e066) in std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WalletDatabaseFileId>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__ha
==================