Skip to content

ThreadSanitizer data race #12952

@qoega

Description

@qoega

How to reproduce

  • 20.7(master)
  • Thread Sanitizer
  • integration test_zookeeper_config
node1_1  | ==================
node1_1  | WARNING: ThreadSanitizer: data race (pid=1)
node1_1  |   Write of size 4 at 0x7b9000010028 by thread T35:
node1_1  |     #0 <null> <null> (clickhouse+0x16f4329d)
node1_1  |     #1 <null> <null> (clickhouse+0x16f09c35)
node1_1  |     #2 <null> <null> (clickhouse+0x16f09ae2)
node1_1  |     #3 <null> <null> (clickhouse+0x16f1bcea)
node1_1  |     #4 <null> <null> (clickhouse+0x16f1bfff)
node1_1  |     #5 <null> <null> (clickhouse+0x15bec104)
node1_1  |     #6 <null> <null> (clickhouse+0x15beff84)
node1_1  |     #7 <null> <null> (clickhouse+0x12e1fb9b)
node1_1  |     #8 <null> <null> (clickhouse+0xa98e64d)
node1_1  |     #9 <null> <null> (clickhouse+0x131c9454)
node1_1  |     #10 <null> <null> (clickhouse+0x131c8e64)
node1_1  |     #11 <null> <null> (clickhouse+0x131ced2b)
node1_1  |     #12 <null> <null> (clickhouse+0xa991dbd)
node1_1  |     #13 <null> <null> (clickhouse+0xa9951dc)
node1_1  |     #14 <null> <null> (clickhouse+0xa87670c)
node1_1  |

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0x16f4329d 0x16f09c35 0x16f09ae2 0x16f1bcea 0x16f1bfff 0x15bec104 0x15beff84 0x12e1fb9b 0xa98e64d 0x131c9454 0x131c8e64 0x131ced2b 0xa991dbd 0xa9951dc 0xa87670c
0x0000000016f4329d
ssl3_read_bytes
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/record/rec_layer_s3.c:1339
0x0000000016f09c35
ssl3_read_internal
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/s3_lib.c:4470
0x0000000016f09ae2
ssl3_read
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/s3_lib.c:4493
0x0000000016f1bcea
ssl_read_internal
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:1827
0x0000000016f1bfff
SSL_read
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:1841
0x0000000015bec104
Poco::Net::SecureSocketImpl::receiveBytes(void*, int, int)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureSocketImpl.cpp:335
0x0000000015beff84
Poco::Net::SecureStreamSocketImpl::receiveBytes(void*, int, int)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp:139
0x0000000012e1fb9b
DB::ReadBufferFromPocoSocket::nextImpl()
/build/obj-x86_64-linux-gnu/../src/IO/ReadBufferFromPocoSocket.cpp:34
0x000000000a98e64d
DB::ReadBuffer::readStrict(char*, unsigned long)
/build/obj-x86_64-linux-gnu/../src/IO/ReadBuffer.h:53
??
/build/obj-x86_64-linux-gnu/../src/IO/ReadBuffer.h:81
??
/build/obj-x86_64-linux-gnu/../src/IO/ReadBuffer.h:141
DB::ReadBuffer::readStrict(char*, unsigned long)
/build/obj-x86_64-linux-gnu/../src/IO/ReadBuffer.h:155
0x00000000131c9454
void DB::readPODBinary<int>(int&, DB::ReadBuffer&)
/build/obj-x86_64-linux-gnu/../src/IO/ReadHelpers.h:107
std::__1::enable_if<is_arithmetic_v<int>, void>::type DB::readBinary<int>(int&, DB::ReadBuffer&)
/build/obj-x86_64-linux-gnu/../src/IO/ReadHelpers.h:783
Coordination::read(int&, DB::ReadBuffer&)
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:327
??
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:412
Coordination::ZooKeeper::receiveEvent()
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:1199
0x00000000131c8e64
Coordination::ZooKeeper::receiveThread()
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:1168
0x00000000131ced2b
Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:875
_ZNSt3__118__invoke_constexprIRKZN12Coordination9ZooKeeperC1ERKNS_6vectorINS2_4NodeENS_9allocatorIS4_EEEERKNS_12basic_stringIcNS_11char_traitsIcEENS5_IcEEEESG_SG_N4Poco8TimespanESI_SI_E3$_1JEEEDTclclsr3std3__1E7forwardIT_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOSM_DpOSN_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3525
decltype(auto) std::__1::__apply_tuple_impl<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1 const&, std::__1::tuple<> const&>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1 const&, std::__1::tuple<> const&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1 const&, std::__1::tuple<> const&>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1 const&, std::__1::tuple<> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1&&)::{lambda()#1}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IZN12Coordination9ZooKeeperC1ERKNS_6vectorINS4_4NodeENS_9allocatorIS6_EEEERKNS_12basic_stringIcNS_11char_traitsIcEENS7_IcEEEESI_SI_N4Poco8TimespanESK_SK_E3$_1JEEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardISM_Efp_Espclsr3std3__1E7forwardISO_Efp0_EEESN_SQ_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:348
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x000000000a991dbd
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:227
0x000000000a9951dc
ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
_ZNSt3__18__invokeIZN14ThreadPoolImplINS_6threadEE12scheduleImplIvEET_NS_8functionIFvvEEEiNS_8optionalImEEEUlvE1_JEEEDTclclsr3std3__1E7forwardIS5_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOSC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:273
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:284
0x000000000a87670c
__tsan_thread_start_func
crtstuff.c:?

node1_1  |   Previous write of size 4 at 0x7b9000010028 by thread T34:
node1_1  |     #0 <null> <null> (clickhouse+0x16f419d1)
node1_1  |     #1 <null> <null> (clickhouse+0x16f41cad)
node1_1  |     #2 <null> <null> (clickhouse+0x16f40d34)
node1_1  |     #3 <null> <null> (clickhouse+0x16f099b6)
node1_1  |     #4 <null> <null> (clickhouse+0x16f1c65e)
node1_1  |     #5 <null> <null> (clickhouse+0x16f1c7af)
node1_1  |     #6 <null> <null> (clickhouse+0x15bebd84)
node1_1  |     #7 <null> <null> (clickhouse+0x15beff24)
node1_1  |     #8 <null> <null> (clickhouse+0x12e20806)
node1_1  |     #9 <null> <null> (clickhouse+0x131c324a)
node1_1  |     #10 <null> <null> (clickhouse+0x131c8925)
node1_1  |     #11 <null> <null> (clickhouse+0x131ce86b)
node1_1  |     #12 <null> <null> (clickhouse+0xa991dbd)
node1_1  |     #13 <null> <null> (clickhouse+0xa9951dc)
node1_1  |     #14 <null> <null> (clickhouse+0xa87670c)
node1_1  |

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0x16f419d1 0x16f41cad 0x16f40d34 0x16f099b6 0x16f1c65e 0x16f1c7af 0x15bebd84 0x15beff24 0x12e20806 0x131c324a 0x131c8925 0x131ce86b 0xa991dbd 0xa9951dc 0xa87670c
0x0000000016f419d1

ssl3_write_pending
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/record/rec_layer_s3.c:1223
0x0000000016f41cad
do_ssl3_write
??:?
0x0000000016f40d34
ssl3_write_bytes
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/record/rec_layer_s3.c:625
0x0000000016f099b6
ssl3_write
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/s3_lib.c:4456
0x0000000016f1c65e
ssl_write_internal
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:2018
0x0000000016f1c7af
SSL_write
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:2095
0x0000000015bebd84
Poco::Net::SecureSocketImpl::sendBytes(void const*, int, int)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureSocketImpl.cpp:297
0x0000000015beff24
Poco::Net::SecureStreamSocketImpl::sendBytes(void const*, int, int)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp:133
0x0000000012e20806
DB::WriteBufferFromPocoSocket::nextImpl()
/build/obj-x86_64-linux-gnu/../src/IO/WriteBufferFromPocoSocket.cpp:42
0x00000000131c324a
Coordination::ZooKeeperRequest::write(DB::WriteBuffer&) const
/build/obj-x86_64-linux-gnu/../src/IO/WriteBuffer.h:44
Coordination::ZooKeeperRequest::write(DB::WriteBuffer&) const
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:424
0x00000000131c8925
Coordination::ZooKeeper::sendThread()
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:1108
0x00000000131ce86b
Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:874
_ZNSt3__118__invoke_constexprIRKZN12Coordination9ZooKeeperC1ERKNS_6vectorINS2_4NodeENS_9allocatorIS4_EEEERKNS_12basic_stringIcNS_11char_traitsIcEENS5_IcEEEESG_SG_N4Poco8TimespanESI_SI_E3$_0JEEEDTclclsr3std3__1E7forwardIT_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOSM_DpOSN_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3525
decltype(auto) std::__1::__apply_tuple_impl<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0 const&, std::__1::tuple<> const&>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0 const&, std::__1::tuple<> const&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0 const&, std::__1::tuple<> const&>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0 const&, std::__1::tuple<> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0&&)::{lambda()#1}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IZN12Coordination9ZooKeeperC1ERKNS_6vectorINS4_4NodeENS_9allocatorIS6_EEEERKNS_12basic_stringIcNS_11char_traitsIcEENS7_IcEEEESI_SI_N4Poco8TimespanESK_SK_E3$_0JEEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardISM_Efp_Espclsr3std3__1E7forwardISO_Efp0_EEESN_SQ_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:348
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x000000000a991dbd
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:227
0x000000000a9951dc
ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
_ZNSt3__18__invokeIZN14ThreadPoolImplINS_6threadEE12scheduleImplIvEET_NS_8functionIFvvEEEiNS_8optionalImEEEUlvE1_JEEEDTclclsr3std3__1E7forwardIS5_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOSC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:273
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:284
0x000000000a87670c
__tsan_thread_start_func
crtstuff.c:?

node1_1  |   Location is heap block of size 7336 at 0x7b9000010000 allocated by thread T25:
node1_1  |     #0 <null> <null> (clickhouse+0xa874ee4)
node1_1  |     #1 <null> <null> (clickhouse+0x17083511)
node1_1  |     #2 <null> <null> (clickhouse+0x16f168c0)
node1_1  |     #3 <null> <null> (clickhouse+0x15bea7e8)
node1_1  |     #4 <null> <null> (clickhouse+0x15bead42)
node1_1  |     #5 <null> <null> (clickhouse+0x15befb24)
node1_1  |     #6 <null> <null> (clickhouse+0x15c55fef)
node1_1  |     #7 <null> <null> (clickhouse+0x131c6c34)
node1_1  |     #8 <null> <null> (clickhouse+0x131c5fe9)
node1_1  |     #9 <null> <null> (clickhouse+0x131a22db)
node1_1  |     #10 <null> <null> (clickhouse+0x131917f0)
node1_1  |     #11 <null> <null> (clickhouse+0x1319286d)
node1_1  |     #12 <null> <null> (clickhouse+0x120d86cd)
node1_1  |     #13 <null> <null> (clickhouse+0x120bc325)
node1_1  |     #14 <null> <null> (clickhouse+0x120f404f)
node1_1  |     #15 <null> <null> (clickhouse+0x120f1f89)
node1_1  |     #16 <null> <null> (clickhouse+0x12107399)
node1_1  |     #17 <null> <null> (clickhouse+0x1210728d)
node1_1  |     #18 <null> <null> (clickhouse+0xa991dbd)
node1_1  |     #19 <null> <null> (clickhouse+0xa9951dc)
node1_1  |     #20 <null> <null> (clickhouse+0xa87670c)
node1_1  |

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0xa874ee4 0x17083511 0x16f168c0 0x15bea7e8 0x15bead42 0x15befb24 0x15c55fef 0x131c6c34 0x131c5fe9 0x131a22db 0x131917f0 0x1319286d 0x120d86cd 0x120bc325 0x120f404f 0x120f1f89 0x12107399 0x1210728d 0xa991dbd 0xa9951dc 0xa87670c
0x000000000a874ee4
__interceptor_malloc
??:?
0x0000000017083511
CRYPTO_malloc
/build/obj-x86_64-linux-gnu/../contrib/openssl/crypto/mem.c:192
CRYPTO_zalloc
/build/obj-x86_64-linux-gnu/../contrib/openssl/crypto/mem.c:199
0x0000000016f168c0
SSL_new
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:692
0x0000000015bea7e8
Poco::Net::SecureSocketImpl::connectSSL(bool)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureSocketImpl.cpp:170
0x0000000015bead42
Poco::Net::SecureSocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&, bool)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureSocketImpl.cpp:144
0x0000000015befb24
Poco::Net::SecureStreamSocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&)
/build/obj-x86_64-linux-gnu/../contrib/poco/NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp:87
0x0000000015c55fef
Poco::Net::StreamSocket::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&)
/build/obj-x86_64-linux-gnu/../contrib/poco/Net/src/StreamSocket.cpp:84
0x00000000131c6c34
Coordination::ZooKeeper::connect(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, Poco::Timespan)
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:913
0x00000000131c5fe9
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:869
0x00000000131a22db
std::__1::__unique_if<Coordination::ZooKeeper>::__unique_single std::__1::make_unique<Coordination::ZooKeeper, std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan>(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan&&, Poco::Timespan&&, Poco::Timespan&&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3028
0x00000000131917f0
zkutil::ZooKeeper::init(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:91
0x000000001319286d
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:203
0x00000000120d86cd
__compressed_pair_elem<const Poco::Util::AbstractConfiguration &, char const (&)[10], 0, 1>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2214
0x00000000120bc325
std::__1::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>, zkutil::ZooKeeper>::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>&, Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::piecewise_construct_t, std::__1::tuple<std::__1::allocator<zkutil::ZooKeeper>&>, std::__1::tuple<Poco::Util::AbstractConfiguration const&, char const (&) [10]>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2298
std::__1::__shared_ptr_emplace<zkutil::ZooKeeper, std::__1::allocator<zkutil::ZooKeeper> >::__shared_ptr_emplace<Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::allocator<zkutil::ZooKeeper>, Poco::Util::AbstractConfiguration const&, char const (&) [10])
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3569
_ZNSt3__111make_sharedIN6zkutil9ZooKeeperEJRKN4Poco4Util21AbstractConfigurationERA10_KcEEENS_9enable_ifIXntsr8is_arrayIT_EE5valueENS_10shared_ptrISC_EEE4typeEDpOT0_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:4400
DB::Context::getZooKeeper() const
/build/obj-x86_64-linux-gnu/../src/Interpreters/Context.cpp:1445
0x00000000120f404f
DB::DDLWorker::getAndSetZooKeeper()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:274
0x00000000120f1f89
DB::DDLWorker::runMainThread()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:987
0x0000000012107399
_ZNSt3__118__invoke_constexprIRKMN2DB9DDLWorkerEFvvERKPS2_JEvEEDTcldsdeclsr3std3__1E7forwardIT0_Efp0_Efp_spclsr3std3__1E7forwardIT1_Efp1_EEEOT_OSA_DpOSB_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3467
decltype(auto) std::__1::__apply_tuple_impl<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, 0ul>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, std::__1::__tuple_indices<0ul>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
operator()
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
0x000000001210728d
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IMN2DB9DDLWorkerEFvvEJPS4_EEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardIS8_Efp_Espclsr3std3__1E7forwardISA_Efp0_EEES9_SC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:348
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<void (DB::DDLWorker::*)(), DB::DDLWorker*>(void (DB::DDLWorker::*&&)(), DB::DDLWorker*&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x000000000a991dbd
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:227
0x000000000a9951dc
ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
_ZNSt3__18__invokeIZN14ThreadPoolImplINS_6threadEE12scheduleImplIvEET_NS_8functionIFvvEEEiNS_8optionalImEEEUlvE1_JEEEDTclclsr3std3__1E7forwardIS5_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOSC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:273
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:284
0x000000000a87670c
__tsan_thread_start_func
crtstuff.c:?

node1_1  |   Thread T35 'ZooKeeperRecv' (tid=43, running) created by thread T25 at:
node1_1  |     #0 <null> <null> (clickhouse+0xa8767ab)
node1_1  |     #1 <null> <null> (clickhouse+0xa9947e1)
node1_1  |     #2 <null> <null> (clickhouse+0xa990939)
node1_1  |     #3 <null> <null> (clickhouse+0xa991268)
node1_1  |     #4 <null> <null> (clickhouse+0x131c6296)
node1_1  |     #5 <null> <null> (clickhouse+0x131a22db)
node1_1  |     #6 <null> <null> (clickhouse+0x131917f0)
node1_1  |     #7 <null> <null> (clickhouse+0x1319286d)
node1_1  |     #8 <null> <null> (clickhouse+0x120d86cd)
node1_1  |     #9 <null> <null> (clickhouse+0x120bc325)
node1_1  |     #10 <null> <null> (clickhouse+0x120f404f)
node1_1  |     #11 <null> <null> (clickhouse+0x120f1f89)
node1_1  |     #12 <null> <null> (clickhouse+0x12107399)
node1_1  |     #13 <null> <null> (clickhouse+0x1210728d)
node1_1  |     #14 <null> <null> (clickhouse+0xa991dbd)
node1_1  |     #15 <null> <null> (clickhouse+0xa9951dc)
node1_1  |     #16 <null> <null> (clickhouse+0xa87670c)
node1_1  |

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0xa8767ab 0xa9947e1 0xa990939 0xa991268 0x131c6296 0x131a22db 0x131917f0 0x1319286d 0x120d86cd 0x120bc325 0x120f404f 0x120f1f89 0x12107399 0x1210728d 0xa991dbd 0xa9951dc 0xa87670c
0x000000000a8767ab

__interceptor_pthread_create
??:?
0x000000000a9947e1
std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__threading_support:394
thread<(lambda at ../src/Common/ThreadPool.cpp:108:42), void>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:300
0x000000000a990939
void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
0x000000000a991268
ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, int, unsigned long)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:144
0x00000000131c6296
ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_1&&)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:158
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:875
0x00000000131a22db
std::__1::__unique_if<Coordination::ZooKeeper>::__unique_single std::__1::make_unique<Coordination::ZooKeeper, std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan>(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan&&, Poco::Timespan&&, Poco::Timespan&&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3028
0x00000000131917f0
zkutil::ZooKeeper::init(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:91
0x000000001319286d
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:203
0x00000000120d86cd
__compressed_pair_elem<const Poco::Util::AbstractConfiguration &, char const (&)[10], 0, 1>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2214
0x00000000120bc325
std::__1::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>, zkutil::ZooKeeper>::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>&, Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::piecewise_construct_t, std::__1::tuple<std::__1::allocator<zkutil::ZooKeeper>&>, std::__1::tuple<Poco::Util::AbstractConfiguration const&, char const (&) [10]>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2298
std::__1::__shared_ptr_emplace<zkutil::ZooKeeper, std::__1::allocator<zkutil::ZooKeeper> >::__shared_ptr_emplace<Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::allocator<zkutil::ZooKeeper>, Poco::Util::AbstractConfiguration const&, char const (&) [10])
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3569
_ZNSt3__111make_sharedIN6zkutil9ZooKeeperEJRKN4Poco4Util21AbstractConfigurationERA10_KcEEENS_9enable_ifIXntsr8is_arrayIT_EE5valueENS_10shared_ptrISC_EEE4typeEDpOT0_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:4400
DB::Context::getZooKeeper() const
/build/obj-x86_64-linux-gnu/../src/Interpreters/Context.cpp:1445
0x00000000120f404f
DB::DDLWorker::getAndSetZooKeeper()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:274
0x00000000120f1f89
DB::DDLWorker::runMainThread()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:987
0x0000000012107399
_ZNSt3__118__invoke_constexprIRKMN2DB9DDLWorkerEFvvERKPS2_JEvEEDTcldsdeclsr3std3__1E7forwardIT0_Efp0_Efp_spclsr3std3__1E7forwardIT1_Efp1_EEEOT_OSA_DpOSB_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3467
decltype(auto) std::__1::__apply_tuple_impl<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, 0ul>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, std::__1::__tuple_indices<0ul>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
operator()
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
0x000000001210728d
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IMN2DB9DDLWorkerEFvvEJPS4_EEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardIS8_Efp_Espclsr3std3__1E7forwardISA_Efp0_EEES9_SC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:348
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<void (DB::DDLWorker::*)(), DB::DDLWorker*>(void (DB::DDLWorker::*&&)(), DB::DDLWorker*&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x000000000a991dbd
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:227
0x000000000a9951dc
ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
_ZNSt3__18__invokeIZN14ThreadPoolImplINS_6threadEE12scheduleImplIvEET_NS_8functionIFvvEEEiNS_8optionalImEEEUlvE1_JEEEDTclclsr3std3__1E7forwardIS5_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOSC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:273
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:284
0x000000000a87670c
__tsan_thread_start_func
crtstuff.c:?

node1_1  |   Thread T34 'ZooKeeperSend' (tid=42, running) created by thread T25 at:
node1_1  |     #0 <null> <null> (clickhouse+0xa8767ab)
node1_1  |     #1 <null> <null> (clickhouse+0xa9947e1)
node1_1  |     #2 <null> <null> (clickhouse+0xa990939)
node1_1  |     #3 <null> <null> (clickhouse+0xa991268)
node1_1  |     #4 <null> <null> (clickhouse+0x131c60fc)
node1_1  |     #5 <null> <null> (clickhouse+0x131a22db)
node1_1  |     #6 <null> <null> (clickhouse+0x131917f0)
node1_1  |     #7 <null> <null> (clickhouse+0x1319286d)
node1_1  |     #8 <null> <null> (clickhouse+0x120d86cd)
node1_1  |     #9 <null> <null> (clickhouse+0x120bc325)
node1_1  |     #10 <null> <null> (clickhouse+0x120f404f)
node1_1  |     #11 <null> <null> (clickhouse+0x120f1f89)
node1_1  |     #12 <null> <null> (clickhouse+0x12107399)
node1_1  |     #13 <null> <null> (clickhouse+0x1210728d)
node1_1  |     #14 <null> <null> (clickhouse+0xa991dbd)
node1_1  |     #15 <null> <null> (clickhouse+0xa9951dc)
node1_1  |     #16 <null> <null> (clickhouse+0xa87670c)
node1_1  |

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0xa8767ab 0xa9947e1 0xa990939 0xa991268 0x131c60fc 0x131a22db 0x131917f0 0x1319286d 0x120d86cd 0x120bc325 0x120f404f 0x120f1f89 0x12107399 0x1210728d 0xa991dbd 0xa9951dc 0xa87670c
0x000000000a8767ab
__interceptor_pthread_create
??:?
0x000000000a9947e1
std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__threading_support:394
thread<(lambda at ../src/Common/ThreadPool.cpp:108:42), void>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:300
0x000000000a990939
void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
0x000000000a991268
ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, int, unsigned long)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:144
0x00000000131c60fc
ThreadFromGlobalPool::ThreadFromGlobalPool<Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0>(Coordination::ZooKeeper::ZooKeeper(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan)::$_0&&)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:158
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeperImpl.cpp:874
0x00000000131a22db
std::__1::__unique_if<Coordination::ZooKeeper>::__unique_single std::__1::make_unique<Coordination::ZooKeeper, std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan, Poco::Timespan, Poco::Timespan>(std::__1::vector<Coordination::ZooKeeper::Node, std::__1::allocator<Coordination::ZooKeeper::Node> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Timespan&&, Poco::Timespan&&, Poco::Timespan&&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3028
0x00000000131917f0
zkutil::ZooKeeper::init(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:91
0x000000001319286d
ZooKeeper
/build/obj-x86_64-linux-gnu/../src/Common/ZooKeeper/ZooKeeper.cpp:203
0x00000000120d86cd
__compressed_pair_elem<const Poco::Util::AbstractConfiguration &, char const (&)[10], 0, 1>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2214
0x00000000120bc325
std::__1::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>, zkutil::ZooKeeper>::__compressed_pair<std::__1::allocator<zkutil::ZooKeeper>&, Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::piecewise_construct_t, std::__1::tuple<std::__1::allocator<zkutil::ZooKeeper>&>, std::__1::tuple<Poco::Util::AbstractConfiguration const&, char const (&) [10]>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:2298
std::__1::__shared_ptr_emplace<zkutil::ZooKeeper, std::__1::allocator<zkutil::ZooKeeper> >::__shared_ptr_emplace<Poco::Util::AbstractConfiguration const&, char const (&) [10]>(std::__1::allocator<zkutil::ZooKeeper>, Poco::Util::AbstractConfiguration const&, char const (&) [10])
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3569
_ZNSt3__111make_sharedIN6zkutil9ZooKeeperEJRKN4Poco4Util21AbstractConfigurationERA10_KcEEENS_9enable_ifIXntsr8is_arrayIT_EE5valueENS_10shared_ptrISC_EEE4typeEDpOT0_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:4400
DB::Context::getZooKeeper() const
/build/obj-x86_64-linux-gnu/../src/Interpreters/Context.cpp:1445
0x00000000120f404f
DB::DDLWorker::getAndSetZooKeeper()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:274
0x00000000120f1f89
DB::DDLWorker::runMainThread()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DDLWorker.cpp:987
0x0000000012107399
_ZNSt3__118__invoke_constexprIRKMN2DB9DDLWorkerEFvvERKPS2_JEvEEDTcldsdeclsr3std3__1E7forwardIT0_Efp0_Efp_spclsr3std3__1E7forwardIT1_Efp1_EEEOT_OSA_DpOSB_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3467
decltype(auto) std::__1::__apply_tuple_impl<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, 0ul>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&, std::__1::__tuple_indices<0ul>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&>(void (DB::DDLWorker::* const&)(), std::__1::tuple<DB::DDLWorker*> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
operator()
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
0x000000001210728d
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IMN2DB9DDLWorkerEFvvEJPS4_EEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardIS8_Efp_Espclsr3std3__1E7forwardISA_Efp0_EEES9_SC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:348
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<void (DB::DDLWorker::*)(), DB::DDLWorker*>(void (DB::DDLWorker::*&&)(), DB::DDLWorker*&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x000000000a991dbd
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:227
0x000000000a9951dc
ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}::operator()() const
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
_ZNSt3__18__invokeIZN14ThreadPoolImplINS_6threadEE12scheduleImplIvEET_NS_8functionIFvvEEEiNS_8optionalImEEEUlvE1_JEEEDTclclsr3std3__1E7forwardIS5_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOS5_DpOSC_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>&, std::__1::__tuple_indices<>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:273
void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::{lambda()#3}>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:284
0x000000000a87670c
__tsan_thread_start_func
crtstuff.c:?

node1_1  |   Thread T25 'DDLWorker' (tid=33, running) created by main thread at:
node1_1  |     #0 <null> <null> (clickhouse+0xa8767ab)
node1_1  |     #1 <null> <null> (clickhouse+0xa9947e1)
node1_1  |     #2 <null> <null> (clickhouse+0xa990939)
node1_1  |     #3 <null> <null> (clickhouse+0xa991268)
node1_1  |     #4 <null> <null> (clickhouse+0x120ed83c)
node1_1  |     #5 <null> <null> (clickhouse+0x120bbc87)
node1_1  |     #6 <null> <null> (clickhouse+0x1210f2b8)
node1_1  |     #7 <null> <null> (clickhouse+0xa915390)
node1_1  |     #8 <null> <null> (clickhouse+0x15c6e6fd)
node1_1  |     #9 <null> <null> (clickhouse+0xa90d447)
node1_1  |     #10 <null> <null> (clickhouse+0x15c89658)
node1_1  |     #11 <null> <null> (clickhouse+0xa925443)
node1_1  |     #12 <null> <null> (clickhouse+0xa9061c2)
node1_1  |     #13 <null> <null> (libc.so.6+0x271e2)
node1_1  |
node1_1  | SUMMARY: ThreadSanitizer: data race (/usr/bin/clickhouse+0x16f4329d)

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0xa8767ab 0xa9947e1 0xa990939 0xa991268 0x120ed83c 0x120bbc87 0x1210f2b8 0xa915390 0x15c6e6fd 0xa90d447 0x15c89658 0xa925443 0xa9061c2
0x000000000a8767ab
__interceptor_pthread_create
??:?
0x000000000a9947e1
std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__threading_support:394
thread<(lambda at ../src/Common/ThreadPool.cpp:108:42), void>
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/thread:300
0x000000000a990939
void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:108
0x000000000a991268
ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, int, unsigned long)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:144
0x00000000120ed83c
ThreadFromGlobalPool::ThreadFromGlobalPool<DB::BackgroundSchedulePool::BackgroundSchedulePool(unsigned long, unsigned long, unsigned long, char const*)::$_1>(DB::BackgroundSchedulePool::BackgroundSchedulePool(unsigned long, unsigned long, unsigned long, char const*)::$_1&&)
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:158
BackgroundSchedulePool
/build/obj-x86_64-linux-gnu/../src/Core/BackgroundSchedulePool.cpp:163
0x00000000120bbc87
DB::Context::getSchedulePool()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/optional:323
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/optional:829
DB::Context::getSchedulePool()
/build/obj-x86_64-linux-gnu/../src/Interpreters/Context.cpp:1404
0x000000001210f2b8
DB::DatabaseCatalog::loadDatabases()
/build/obj-x86_64-linux-gnu/../src/Interpreters/DatabaseCatalog.cpp:120
0x000000000a915390
DB::Server::main(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&)
/build/obj-x86_64-linux-gnu/../programs/server/Server.cpp:686
0x0000000015c6e6fd
Poco::Util::Application::run()
/build/obj-x86_64-linux-gnu/../contrib/poco/Util/src/Application.cpp:334
0x000000000a90d447
DB::Server::run()
/build/obj-x86_64-linux-gnu/../programs/server/Server.cpp:188
0x0000000015c89658
Poco::Util::ServerApplication::run(int, char**)
/build/obj-x86_64-linux-gnu/../contrib/poco/Util/src/ServerApplication.cpp:611
0x000000000a925443
mainEntryClickHouseServer(int, char**)
/build/obj-x86_64-linux-gnu/../programs/server/Server.cpp:1180
0x000000000a9061c2
main
/build/obj-x86_64-linux-gnu/../programs/main.cpp:324

Metadata

Metadata

Assignees

No one assigned

    Labels

    comp-external-dependenciesThird-party deps updates in contrib/, vendored code, and platform base libraries.duplicatefuzzProblem found by one of the fuzzers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions