Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ThreadSanitizer: data race test_dictionaries_mysql integration test #12490

Closed
qoega opened this issue Jul 14, 2020 · 1 comment · Fixed by #18129
Closed

ThreadSanitizer: data race test_dictionaries_mysql integration test #12490

qoega opened this issue Jul 14, 2020 · 1 comment · Fixed by #18129
Assignees
Labels
duplicate fuzz Problem found by one of the fuzzers

Comments

@qoega
Copy link
Member

qoega commented Jul 14, 2020

Complete report
https://gist.github.com/qoega/d4388c75cf42d09b46e5760a6a6753ff

addr2line -afiCe ~/thread-ch/output/binary/clickhouse-server 0x15b22989 0x15b1d5ae 0x15a03274 0x15a3072c 0x15a2e4a8 0x15a2dc5b 0x159ee640 0x159ee6e1 0x14cefa41 0x14cd1b8a 0x14cd1893 0x14cd013e 0x14ccec2b 0x14ccf162 0x14cc0d9a 0x14cbfd7b 0x14a108b5 0x14a17064 0x14a166a0 0x14a1c97e 0xdf39b22 0xdb79953 0xdb79381 0xdbe2c3a 0xdb8bd43 0xdb8ba9d 0x10b74ed5 0x10fc2eec 0x10fc5849 0x10fcdae4 0x10fcb3f0 0x10fd0cfe 0x10fd0b6d 0x9e8052d 0x9e8394c 0x9d7770c
0x0000000015b22989
evp_cipher_cache_constants
/build/obj-x86_64-linux-gnu/../contrib/openssl/crypto/evp/evp_lib.c:296
0x0000000015b1d5ae
EVP_CIPHER_fetch
/build/obj-x86_64-linux-gnu/../contrib/openssl/crypto/evp/evp_enc.c:1614
EVP_CipherInit_ex
/build/obj-x86_64-linux-gnu/../contrib/openssl/crypto/evp/evp_enc.c:330
0x0000000015a03274
tls1_change_cipher_state
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/t1_enc.c:344
0x0000000015a3072c
ossl_statem_client_post_work
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/statem/statem_clnt.c:814
0x0000000015a2e4a8
write_state_machine
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/statem/statem.c:872
state_machine
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/statem/statem.c:444
0x0000000015a2dc5b
ossl_statem_connect
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/statem/statem.c:251
0x00000000159ee640
SSL_do_handshake
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:3802
0x00000000159ee6e1
SSL_connect
/build/obj-x86_64-linux-gnu/../contrib/openssl/ssl/ssl_lib.c:1717
0x0000000014cefa41
ma_tls_connect
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/libmariadb/secure/openssl.c:627
0x0000000014cd1b8a
ma_pvio_tls_connect
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/libmariadb/ma_tls.c:83
0x0000000014cd1893
ma_pvio_start_ssl
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/libmariadb/ma_pvio.c:531
0x0000000014cd013e
send_client_reply_packet
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/plugins/auth/my_auth.c:302
client_mpvio_write_packet
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/plugins/auth/my_auth.c:444
0x0000000014ccec2b
native_password_auth_client
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/plugins/auth/my_auth.c:88
0x0000000014ccf162
run_plugin_auth
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/plugins/auth/my_auth.c:594
0x0000000014cc0d9a
mthd_my_real_connect
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/libmariadb/mariadb_lib.c:1518
0x0000000014cbfd7b
mysql_real_connect
/build/obj-x86_64-linux-gnu/../contrib/mariadb-connector-c/libmariadb/mariadb_lib.c:1203
0x0000000014a108b5
mysqlxx::Connection::connect(char const*, char const*, char const*, char const*, unsigned int, char const*, char const*, char const*, char const*, unsigned int, unsigned int, bool)
/build/obj-x86_64-linux-gnu/../base/mysqlxx/Connection.cpp:111
0x0000000014a17064
mysqlxx::Pool::allocConnection(bool)
/build/obj-x86_64-linux-gnu/../base/mysqlxx/Pool.cpp:258
0x0000000014a166a0
mysqlxx::Pool::get()
/build/obj-x86_64-linux-gnu/../base/mysqlxx/Pool.cpp:137
0x0000000014a1c97e
mysqlxx::PoolWithFailover::get()
/build/obj-x86_64-linux-gnu/../base/mysqlxx/PoolWithFailover.cpp:93
0x000000000df39b22
DB::MySQLDictionarySource::loadAll()
/build/obj-x86_64-linux-gnu/../src/Dictionaries/MySQLDictionarySource.cpp:118
0x000000000db79953
DB::HashedDictionary::loadData()
/build/obj-x86_64-linux-gnu/../src/Dictionaries/HashedDictionary.cpp:419
0x000000000db79381
HashedDictionary
/build/obj-x86_64-linux-gnu/../src/Dictionaries/HashedDictionary.cpp:54
0x000000000dbe2c3a
std::__1::__unique_if<DB::HashedDictionary>::__unique_single std::__1::make_unique<DB::HashedDictionary, 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&, DB::DictionaryStructure const&, std::__1::unique_ptr<DB::IDictionarySource, std::__1::default_delete<DB::IDictionarySource> >, DB::ExternalLoadableLifetime const&, bool const&, bool&>(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&, DB::DictionaryStructure const&, std::__1::unique_ptr<DB::IDictionarySource, std::__1::default_delete<DB::IDictionarySource> >&&, DB::ExternalLoadableLifetime const&, bool const&, bool&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/memory:3028
0x000000000db8bd43
operator()
/build/obj-x86_64-linux-gnu/../src/Dictionaries/HashedDictionary.cpp:795
0x000000000db8ba9d
auto DB::registerDictionaryHashed(DB::DictionaryFactory&)::$_0::operator()<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::DictionaryStructure const&, Poco::Util::AbstractConfiguration 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&, DB::DictionaryStructure const&, Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<DB::IDictionarySource, std::__1::default_delete<DB::IDictionarySource> >) const
/build/obj-x86_64-linux-gnu/../src/Dictionaries/HashedDictionary.cpp:799
_ZNSt3__18__invokeIRZN2DB24registerDictionaryHashedERNS1_17DictionaryFactoryEE3$_0JRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS1_19DictionaryStructureERKN4Poco4Util21AbstractConfigurationESD_NS_10unique_ptrINS1_17IDictionarySourceENS_14default_deleteISN_EEEEEEEDTclclsr3std3__1E7forwardIT_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOSR_DpOSS_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:317
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<DB::registerDictionaryHashed(DB::DictionaryFactory&)::$_0, std::__1::allocator<DB::registerDictionaryHashed(DB::DictionaryFactory&)::$_0>, std::__1::unique_ptr<DB::IDictionaryBase, std::__1::default_delete<DB::IDictionaryBase> > (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::DictionaryStructure const&, Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<DB::IDictionarySource, std::__1::default_delete<DB::IDictionarySource> >)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::DictionaryStructure const&, Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<DB::IDictionarySource, std::__1::default_delete<DB::IDictionarySource> >&&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x0000000010b74ed5
DB::DictionaryFactory::create(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context const&, bool) const
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
DB::DictionaryFactory::create(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context const&, bool) const
/build/obj-x86_64-linux-gnu/../src/Dictionaries/DictionaryFactory.cpp:55
0x0000000010fc2eec
DB::ExternalDictionariesLoader::create(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Util::AbstractConfiguration 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&) const
/build/obj-x86_64-linux-gnu/../src/Interpreters/ExternalDictionariesLoader.cpp:34
0x0000000010fc5849
std::__1::__function::__func<DB::ExternalLoader::ExternalLoader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Logger*)::$_1, std::__1::allocator<DB::ExternalLoader::ExternalLoader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Logger*)::$_1>, std::__1::shared_ptr<DB::IExternalLoadable const> (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&)
/build/obj-x86_64-linux-gnu/../src/Interpreters/ExternalLoader.cpp:1433
auto DB::ExternalLoader::ExternalLoader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Logger*)::$_1::operator()<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&) const
/build/obj-x86_64-linux-gnu/../src/Interpreters/ExternalLoader.cpp:1226
_ZNSt3__18__invokeIRZN2DB14ExternalLoaderC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPN4Poco6LoggerEE3$_1JSA_RKNS2_12ObjectConfigERKNS_10shared_ptrIKNS1_17IExternalLoadableEEEEEEDTclclsr3std3__1E7forwardIT_Efp_Espclsr3std3__1E7forwardIT0_Efp0_EEEOSP_DpOSQ_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3519
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/__functional_base:317
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1540
std::__1::__function::__func<DB::ExternalLoader::ExternalLoader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Logger*)::$_1, std::__1::allocator<DB::ExternalLoader::ExternalLoader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Logger*)::$_1>, std::__1::shared_ptr<DB::IExternalLoadable const> (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&)>::operator()(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x0000000010fcdae4
DB::ExternalLoader::LoadingDispatcher::loadSingleObject(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1867
??
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:2473
DB::ExternalLoader::LoadingDispatcher::loadSingleObject(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::ExternalLoader::ObjectConfig const&, std::__1::shared_ptr<DB::IExternalLoadable const>)
/build/obj-x86_64-linux-gnu/../src/Interpreters/ExternalLoader.cpp:988
0x0000000010fcb3f0
DB::ExternalLoader::LoadingDispatcher::doLoading(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool)
/build/obj-x86_64-linux-gnu/../src/Interpreters/ExternalLoader.cpp:943
0x0000000010fd0cfe
_ZNSt3__118__invoke_constexprIRKMN2DB14ExternalLoader17LoadingDispatcherEFvRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEmbmbERKPS3_JSB_RKmRKbSK_SM_EvEEDTcldsdeclsr3std3__1E7forwardIT0_Efp0_Efp_spclsr3std3__1E7forwardIT1_Efp1_EEEOT_OSN_DpOSO_
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/type_traits:3467
decltype(auto) std::__1::__apply_tuple_impl<void (DB::ExternalLoader::LoadingDispatcher::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), std::__1::tuple<DB::ExternalLoader::LoadingDispatcher*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long, bool, unsigned long, bool> const&, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(void (DB::ExternalLoader::LoadingDispatcher::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), std::__1::tuple<DB::ExternalLoader::LoadingDispatcher*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long, bool, unsigned long, bool> const&, std::__1::__tuple_indices<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1415
decltype(auto) std::__1::apply<void (DB::ExternalLoader::LoadingDispatcher::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), std::__1::tuple<DB::ExternalLoader::LoadingDispatcher*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long, bool, unsigned long, bool> const&>(void (DB::ExternalLoader::LoadingDispatcher::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), std::__1::tuple<DB::ExternalLoader::LoadingDispatcher*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long, bool, unsigned long, bool> const&)
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/tuple:1424
operator()
/build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.h:168
0x0000000010fd0b6d
_ZNSt3__18__invokeIRZN20ThreadFromGlobalPoolC1IMN2DB14ExternalLoader17LoadingDispatcherEFvRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEmbmbEJPS5_RSB_RmRbSI_bEEEOT_DpOT0_EUlvE_JEEEDTclclsr3std3__1E7forwardISK_Efp_Espclsr3std3__1E7forwardISM_Efp0_EEESL_SO_
/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::ExternalLoader::LoadingDispatcher::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), DB::ExternalLoader::LoadingDispatcher*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long&, bool&, unsigned long&, bool>(void (DB::ExternalLoader::LoadingDispatcher::*&&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, bool, unsigned long, bool), DB::ExternalLoader::LoadingDispatcher*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long&, bool&, unsigned long&, bool&&)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()()
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/functional:1714
0x0000000009e8052d
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
0x0000000009e8394c
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
0x0000000009d7770c
__tsan_thread_start_func
crtstuff.c:?
@qoega qoega added the bug Confirmed user-visible misbehaviour in official release label Jul 14, 2020
@alexey-milovidov alexey-milovidov added fuzz Problem found by one of the fuzzers and removed bug Confirmed user-visible misbehaviour in official release labels Nov 6, 2020
@alexey-milovidov
Copy link
Member

This data race in OpenSSL is bening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate fuzz Problem found by one of the fuzzers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants