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

Fixed potential deadlock in ExternalDictionaries #4701

Merged
merged 1 commit into from
Mar 15, 2019

Conversation

alexey-milovidov
Copy link
Member

For changelog. Remove if this is non-significant change.

Category (leave one):

  • Bug Fix

Short description (up to few sentences):
Deadlock may happen while executing DROP DATABASE dictionary query.

@alexey-milovidov
Copy link
Member Author

More info:

==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=134888)
  Cycle in lock order graph: M401237648678584448 (0x000000000000) => M812 (0x7b8400000030) => M401237648678584448

  Mutex M812 (Context) acquired here while holding mutex M401237648678584448 (ext_dict_mutex) in thread T24:
    #0 pthread_mutex_lock /home/milovidov/ClickHouse/ci/workspace/llvm/llvm/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:4112 (clickhouse+0x6374b8b)
    #1 std::__1::recursive_mutex::lock() <null> (clickhouse+0x64472e5)
    #2 DB::ExternalDictionaries::ExternalDictionaries(std::__1::unique_ptr<DB::IExternalLoaderConfigRepository, std::__1::default_delete<DB::IExternalLoaderConfigRepository> >, DB::Context&, bool) /home/milovidov/ClickHouse/
build_clang9_tsan/../dbms/src/Interpreters/ExternalDictionaries.cpp:33:34 (clickhouse+0xbdc28ed)
    #3 void std::__1::__optional_storage_base<DB::ExternalDictionaries, false>::__construct<std::__1::unique_ptr<DB::IExternalLoaderConfigRepository, std::__1::default_delete<DB::IExternalLoaderConfigRepository> >, DB::Conte
xt&, bool const&>(std::__1::unique_ptr<DB::IExternalLoaderConfigRepository, std::__1::default_delete<DB::IExternalLoaderConfigRepository> >&&, DB::Context&, bool const&) /usr/local/bin/../include/c++/v1/optional:323:54 (clic
khouse+0xbd814d5)
    #4 DB::ExternalDictionaries& std::__1::optional<DB::ExternalDictionaries>::emplace<std::__1::unique_ptr<DB::IExternalLoaderConfigRepository, std::__1::default_delete<DB::IExternalLoaderConfigRepository> >, DB::Context&, 
bool const&, void>(std::__1::unique_ptr<DB::IExternalLoaderConfigRepository, std::__1::default_delete<DB::IExternalLoaderConfigRepository> >&&, DB::Context&, bool const&) /usr/local/bin/../include/c++/v1/optional:822 (clickh
ouse+0xbd814d5)
    #5 DB::Context::getExternalDictionariesImpl(bool) const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/Context.cpp:1215 (clickhouse+0xbd814d5)
    #6 DB::Context::getExternalDictionaries() const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/Context.cpp:1166:12 (clickhouse+0xbd8139b)
    #7 DB::DatabaseDictionary::listTables(DB::Context const&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Databases/DatabaseDictionary.cpp:36:32 (clickhouse+0xbdf6d12)
    #8 DB::DatabaseDictionary::getIterator(DB::Context const&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Databases/DatabaseDictionary.cpp:90:55 (clickhouse+0xbdf7fbb)
    #9 DB::AsynchronousMetrics::update() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/AsynchronousMetrics.cpp:164:45 (clickhouse+0xbd5dfe6)
    #10 DB::AsynchronousMetrics::run() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/AsynchronousMetrics.cpp:93:13 (clickhouse+0xbd5d917)
    #11 DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()::operator()() const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/AsynchronousMetrics.h:25:46 (clickhouse+0x6493795)
    #12 decltype(std::__1::forward<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() const&>(fp)()) std::__1::__invoke_constexpr<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() con
st&>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() const&) /usr/local/bin/../include/c++/v1/type_traits:4416 (clickhouse+0x6493795)
    #13 decltype(auto) std::__1::__apply_tuple_impl<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() const&, std::__1::tuple<> const&>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda
'() const&, std::__1::tuple<> const&, std::__1::__tuple_indices<>) /usr/local/bin/../include/c++/v1/tuple:1358 (clickhouse+0x6493795)
    #14 decltype(auto) std::__1::apply<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() const&, std::__1::tuple<> const&>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'() const&, s
td::__1::tuple<> const&) /usr/local/bin/../include/c++/v1/tuple:1367 (clickhouse+0x6493795)
    #15 ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&)::'lambda'()::operator()() c
onst /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.h:147 (clickhouse+0x6493795)
    #16 decltype(std::__1::forward<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(fp)()) std::__1::__invoke<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB:
:Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&)::'lambda'()&>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&) /usr/local/bin/../include/c++/v1/type_
traits:4410 (clickhouse+0x6493795)
    #17 void std::__1::__invoke_void_return_wrapper<void>::__call<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetric
s(DB::Context&)::'lambda'()&&)::'lambda'()&>(ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lam
bda'()&&)::'lambda'()&) /usr/local/bin/../include/c++/v1/__functional_base:348 (clickhouse+0x6493795)
    #18 std::__1::__function::__alloc_func<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambd
a'()&&)::'lambda'(), std::__1::allocator<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&)::'lambda'()>, void ()>::operator()() /usr/local/bin/../include/c++/v1/functional:1527 (clickhouse+0x6493795)
    #19 std::__1::__function::__func<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&)::'lambda'(), std::__1::allocator<ThreadFromGlobalPool::ThreadFromGlobalPool<DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()>(DB::AsynchronousMetrics::AsynchronousMetrics(DB::Context&)::'lambda'()&&)::'lambda'()>, void ()>::operator()() /usr/local/bin/../include/c++/v1/functional:1651 (clickhouse+0x6493795)
    #20 std::__1::__function::__value_func<void ()>::operator()() const /usr/local/bin/../include/c++/v1/functional:1799:16 (clickhouse+0x649e2b6)
    #21 std::__1::function<void ()>::operator()() const /usr/local/bin/../include/c++/v1/functional:2347 (clickhouse+0x649e2b6)
    #22 ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:169 (clickhouse+0x649e2b6)
    #23 void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()::operator()() const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:65:73 (clickhouse+0x64a13fc)
    #24 decltype(std::__1::forward<void>(fp)()) std::__1::__invoke<void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&) /usr/local/bin/../include/c++/v1/type_traits:4410 (clickhouse+0x64a13fc)
    #25 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(std::__1::tuple<void, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>&, std::__1::__tuple_indices<>) /usr/local/bin/../include/c++/v1/thread:341 (clickhouse+0x64a13fc)
    #26 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 ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()> >(void*) /usr/local/bin/../include/c++/v1/thread:351 (clickhouse+0x64a13fc)

    Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message

  Mutex M401237648678584448 (ext_dict_mutex) acquired here while holding mutex M812 (Context) in thread T47:
    #0 pthread_mutex_lock /home/milovidov/ClickHouse/ci/workspace/llvm/llvm/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:4112 (clickhouse+0x6374b8b)
    #1 std::__1::mutex::lock() <null> (clickhouse+0x64471f5)
    #2 DB::Context::getExternalDictionaries() const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/Context.cpp:1166:12 (clickhouse+0xbd8139b)
    #3 DB::DatabaseDictionary::empty(DB::Context const&) const /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Databases/DatabaseDictionary.cpp:95:32 (clickhouse+0xbdf818e)
    #4 DB::InterpreterDropQuery::executeToDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, DB::ASTDropQuery::Kind, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/InterpreterDropQuery.cpp:178:54 (clickhouse+0xbe5235e)
    #5 DB::InterpreterDropQuery::execute() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/InterpreterDropQuery.cpp:44:16 (clickhouse+0xbe50eb8)
    #6 DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/executeQuery.cpp:239:28 (clickhouse+0xc24918e)
    #7 DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/executeQuery.cpp:446:38 (clickhouse+0xc2487fe)
    #8 DB::TCPHandler::runImpl() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/server/TCPHandler.cpp:190:24 (clickhouse+0x6500898)
    #9 DB::TCPHandler::run() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/server/TCPHandler.cpp:937:9 (clickhouse+0x650c2d7)
    #10 Poco::Net::TCPServerConnection::start() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Net/src/TCPServerConnection.cpp:43:3 (clickhouse+0xce62f42)
    #11 Poco::Net::TCPServerDispatcher::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Net/src/TCPServerDispatcher.cpp:114:20 (clickhouse+0xce637ba)
    #12 Poco::PooledThread::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/ThreadPool.cpp:214:14 (clickhouse+0xcf55041)
    #13 Poco::(anonymous namespace)::RunnableHolder::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread.cpp:43:11 (clickhouse+0xcf5356f)
    #14 Poco::ThreadImpl::runnableEntry(void*) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread_STD.cpp:139:27 (clickhouse+0xcf51dda)
    #15 decltype(std::__1::forward<void* (*)(void*)>(fp)(std::__1::forward<Poco::ThreadImpl*>(fp0))) std::__1::__invoke<void* (*)(void*), Poco::ThreadImpl*>(void* (*&&)(void*), Poco::ThreadImpl*&&) /usr/local/bin/../include/c++/v1/type_traits:4410:1 (clickhouse+0xcf53f1a)
    #16 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void* (*)(void*), Poco::ThreadImpl*, 2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void* (*)(void*), Poco::ThreadImpl*>&, std::__1::__tuple_indices<2ul>) /usr/local/bin/../include/c++/v1/thread:341 (clickhouse+0xcf53f1a)
    #17 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* (*)(void*), Poco::ThreadImpl*> >(void*) /usr/local/bin/../include/c++/v1/thread:351 (clickhouse+0xcf53f1a)

  Thread T24 'AsyncMetrics' (tid=134923, running) created by main thread at:
    #0 pthread_create /home/milovidov/ClickHouse/ci/workspace/llvm/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:976 (clickhouse+0x635bd95)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /usr/local/bin/../include/c++/v1/__threading_support:327:10 (clickhouse+0x64a09e1)
    #2 std::__1::thread::thread<void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'(), void>(void&&) /usr/local/bin/../include/c++/v1/thread:367 (clickhouse+0x64a09e1)
    #3 void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:65:35 (clickhouse+0x649cfd1)
    #4 ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, int, unsigned long) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:92:5 (clickhouse+0x649d8d8)
    #5 ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.h:140:38 (clickhouse+0x64a21b1)
    #6 void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:65:35 (clickhouse+0x649ecff)
    #7 ThreadPoolImpl<ThreadFromGlobalPool>::schedule(std::__1::function<void ()>, int) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Common/ThreadPool.cpp:80:5 (clickhouse+0x649e810)
    #8 DB::DatabaseOrdinary::loadTables(DB::Context&, ThreadPoolImpl<ThreadFromGlobalPool>*, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Databases/DatabaseOrdinary.cpp:194:26 (clickhouse+0xbdf0d54)
    #9 DB::InterpreterCreateQuery::createDatabase(DB::ASTCreateQuery&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/InterpreterCreateQuery.cpp:163:19 (clickhouse+0xbdd6477)
    #10 DB::InterpreterCreateQuery::execute() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/InterpreterCreateQuery.cpp:693:16 (clickhouse+0xbde148c)
    #11 DB::executeCreateQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, 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&, ThreadPoolImpl<ThreadFromGlobalPool>*, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/loadMetadata.cpp:51:17 (clickhouse+0xc25a7c5)
    #12 DB::loadDatabase(DB::Context&, 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&, ThreadPoolImpl<ThreadFromGlobalPool>*, bool) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/loadMetadata.cpp:76 (clickhouse+0xc25a7c5)
    #13 DB::loadMetadata(DB::Context&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/src/Interpreters/loadMetadata.cpp:117:9 (clickhouse+0xc25a1c6)
    #14 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&) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/server/Server.cpp:490:9 (clickhouse+0x647d07e)
    #15 Poco::Util::Application::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Util/src/Application.cpp:335:8 (clickhouse+0xce7496d)
    #16 DB::Server::run() /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/server/Server.cpp:138:25 (clickhouse+0x6477297)
    #17 Poco::Util::ServerApplication::run(int, char**) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Util/src/ServerApplication.cpp:618:9 (clickhouse+0xce91c58)
    #18 mainEntryClickHouseServer(int, char**) /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/server/Server.cpp:846:20 (clickhouse+0x6487243)
    #19 main /home/milovidov/ClickHouse/build_clang9_tsan/../dbms/programs/main.cpp:175:12 (clickhouse+0x64026f2)

  Thread T47 'TCPHandler' (tid=137912, running) created by thread T41 at:
    #0 pthread_create /home/milovidov/ClickHouse/ci/workspace/llvm/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:976 (clickhouse+0x635bd95)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /usr/local/bin/../include/c++/v1/__threading_support:327:10 (clickhouse+0xcf53917)
    #2 std::__1::thread::thread<void* (&)(void*), Poco::ThreadImpl*, void>(void* (&)(void*), Poco::ThreadImpl*&&) /usr/local/bin/../include/c++/v1/thread:367 (clickhouse+0xcf53917)
    #3 Poco::ThreadImpl::startImpl(Poco::SharedPtr<Poco::Runnable, Poco::ReferenceCounter, Poco::ReleasePolicy<Poco::Runnable> >) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread_STD.cpp:58:53 (clickhouse+0xcf518a2)
    #4 Poco::Thread::start(Poco::Runnable&) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread.cpp:116:2 (clickhouse+0xcf52f5c)
    #5 Poco::PooledThread::start(int) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/ThreadPool.cpp:88:10 (clickhouse+0xcf56b2e)
    #6 Poco::ThreadPool::getThread() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/ThreadPool.cpp:525 (clickhouse+0xcf56b2e)
    #7 Poco::ThreadPool::startWithPriority(Poco::Thread::Priority, Poco::Runnable&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/ThreadPool.cpp:429:2 (clickhouse+0xcf56eee)
    #8 Poco::Net::TCPServerDispatcher::enqueue(Poco::Net::StreamSocket const&) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Net/src/TCPServerDispatcher.cpp:145:17 (clickhouse+0xce63daf)
    #9 Poco::Net::TCPServer::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Net/src/TCPServer.cpp:148:21 (clickhouse+0xce62935)
    #10 Poco::(anonymous namespace)::RunnableHolder::run() /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread.cpp:43:11 (clickhouse+0xcf5356f)
    #11 Poco::ThreadImpl::runnableEntry(void*) /home/milovidov/ClickHouse/build_clang9_tsan/../contrib/poco/Foundation/src/Thread_STD.cpp:139:27 (clickhouse+0xcf51dda)
    #12 decltype(std::__1::forward<void* (*)(void*)>(fp)(std::__1::forward<Poco::ThreadImpl*>(fp0))) std::__1::__invoke<void* (*)(void*), Poco::ThreadImpl*>(void* (*&&)(void*), Poco::ThreadImpl*&&) /usr/local/bin/../include/c++/v1/type_traits:4410:1 (clickhouse+0xcf53f1a)
    #13 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void* (*)(void*), Poco::ThreadImpl*, 2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void* (*)(void*), Poco::ThreadImpl*>&, std::__1::__tuple_indices<2ul>) /usr/local/bin/../include/c++/v1/thread:341 (clickhouse+0xcf53f1a)
    #14 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* (*)(void*), Poco::ThreadImpl*> >(void*) /usr/local/bin/../include/c++/v1/thread:351 (clickhouse+0xcf53f1a)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/opt/milovidov/ClickHouse/build_clang9_tsan/dbms/programs/clickhouse+0x64472e5) in std::__1::recursive_mutex::lock()

@alexey-milovidov
Copy link
Member Author

00376_shard_group_uniq_array_of_int_array with UBSan - TODO.

@alexey-milovidov alexey-milovidov merged commit d303381 into master Mar 15, 2019
@abyss7 abyss7 added the pr-bugfix Pull request with bugfix, not backported by default label Apr 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr-bugfix Pull request with bugfix, not backported by default
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants