pingcap / pingcap/tiflash

Suspicious data race in `DB::loadMetadata`

Open
#9,895 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component/storage type/bug
Dominant language
C++
Stars
1k
Forks
423
Avg merge
1d 15h
Merged PRs (30d)
24

Description

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)
2. What did you expect to see? (Required)
3. What did you see instead (Required)
==================
WARNING: ThreadSanitizer: data race (pid=3338379)
  Write of size 8 at 0x7b2000480218 by thread T417:
    #0 operator delete(void*) /root/llvm-project/compiler-rt/lib/tsan/rtl/tsan_new_delete.cpp:126 (tiflash+0x26fee20)
    #1 std::__1::promise<void>::~promise() ??:? (libc++.so.1+0x8d80d)
    #2 std::__1::__shared_count::__release_shared() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__memory/shared_ptr.h:177 (tiflash+0x28bb6fe)
    #3 std::__1::__shared_weak_count::__release_shared() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__memory/shared_ptr.h:219 (tiflash+0x28bb6fe)
    #4 ~shared_ptr /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__memory/shared_ptr.h:959 (tiflash+0x28bb6fe)
    #5 ~ /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:327 (tiflash+0x28bb6fe)
    #6 ~__compressed_pair_elem /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__memory/compressed_pair.h:35 (tiflash+0x28bb6fe)
    #7 std::__1::__function::__alloc_func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::destroy() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:190 (tiflash+0x28bb6fe)
    #8 std::__1::__function::__func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::destroy() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:327 (tiflash+0x28bb6fe)
    #9 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::worker(std::__1::__list_iterator<DB::ThreadFromGlobalPoolImpl<false>, void*>) ??:? (tiflash+0x282042a)
    #10 std::__1::function<void ()>::operator=(decltype(nullptr)) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1148 (tiflash+0x282042a)
    #11 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::worker(std::__1::__list_iterator<DB::ThreadFromGlobalPoolImpl<false>, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:311 (tiflash+0x282042a)
    #12 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x282360c)
    #13 decltype ((static_cast<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&>({parm#1}))()) std::__1::__invoke_constexpr<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__
1::optional<unsigned long>, bool)::{lambda()#2}&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, (DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned lo
ng>, bool)::{lambda()#2}&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3924 (tiflash+0x282360c)
    #14 decltype(auto) std::__1::__apply_tuple_impl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1:
:optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1536 (tiflash+0x282360c)
    #15 decltype(auto) std::__1::apply<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<uns
igned long>, bool)::{lambda()#2}&, std::__1::tuple<>&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1545 (tiflash+0x282360c)
    #16 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:235 (tiflash+0x282360c)
    #17 _ZNSt3__18__invokeIRZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS1_14ThreadPoolImplIS3_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS8_DpOT0_EUlvE_JEEEDTclscS8_fp_spscSG_fp0_EESF_SI_ /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x282360c)
    #18 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::sc
heduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&>(DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::Th
readPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0x282360c)
    #19 _ZNSt3__110__function12__alloc_funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0x282360c)
    #20 _ZNSt3__110__function6__funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0x282360c)
    #21 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x281dc3a)
    #22 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x281dc3a)
    #23 DB::ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:306 (tiflash+0x281dc3a)
    #24 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x28216c0)
    #25 decltype ((static_cast<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>({parm#1}))()) std::__1::__invoke<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB
::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&, (DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include
/c++/v1/type_traits:3918 (tiflash+0x28216c0)
    #26 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__
1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:280 (tiflash+0x28216c0)
    #27 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__threa
d_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:291 (tiflash+0x28216c0)

  Previous atomic read of size 1 at 0x7b2000480218 by thread T403:
    #0 pthread_cond_wait /root/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1198 (tiflash+0x268a67a)
    #1 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) ??:? (libc++.so.1+0x89c0e)
    #2 DB::DatabaseTiFlash::loadTables(DB::Context&, DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >*, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Databases/DatabaseTiFlash.cpp:207 (tiflash+0xb4ba527)
    #3 DB::InterpreterCreateQuery::createDatabase(DB::ASTCreateQuery&) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/InterpreterCreateQuery.cpp:170 (tiflash+0xb77a09f)
    #4 DB::InterpreterCreateQuery::execute() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/InterpreterCreateQuery.cpp:675 (tiflash+0xb78212b)
    #5 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&, DB::ThreadPoolImpl<DB::ThreadFromGlo
balPoolImpl<false> >*, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:62 (tiflash+0xbf1ae1a)
    #6 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:173 (tiflash+0xbf1b3e7)
    #7 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:199 (tiflash+0xbf1b3e7)
    #8 decltype ((static_cast<DB::loadMetadata(DB::Context&)::$_3&>({parm#1}))()) std::__1::__invoke<DB::loadMetadata(DB::Context&)::$_3&>(DB::loadMetadata(DB::Context&)::$_3&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0xbf1b3e7)
    #9 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::loadMetadata(DB::Context&)::$_3&>(DB::loadMetadata(DB::Context&)::$_3&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0xbf1b3e7)
    #10 std::__1::__function::__alloc_func<DB::loadMetadata(DB::Context&)::$_3, std::__1::allocator<DB::loadMetadata(DB::Context&)::$_3>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0xbf1b3e7)
    #11 std::__1::__function::__func<DB::loadMetadata(DB::Context&)::$_3, std::__1::allocator<DB::loadMetadata(DB::Context&)::$_3>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0xbf1b3e7)
    #12 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x28bb414)
    #13 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x28bb414)
    #14 decltype ((static_cast<std::__1::function<void ()>&>({parm#1}))()) std::__1::__invoke<std::__1::function<void ()>&>(std::__1::function<void ()>&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28bb414)
    #15 std::__1::__packaged_task_func<std::__1::function<void ()>, std::__1::allocator<std::__1::function<void ()> >, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:1687 (tiflash+0x28bb414)
    #16 std::__1::__packaged_task_function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:1869 (tiflash+0x28bb8bd)
    #17 std::__1::packaged_task<void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:2089 (tiflash+0x28bb8bd)
    #18 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:327 (tiflash+0x28bb7b3)
    #19 decltype ((static_cast<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>({parm#1}))()) std::__1::__invoke<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>(DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::s
chedule(std::__1::function<void ()>)::{lambda()#1}&, (DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28bb7b3)
    #20 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>(DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../incl
ude/c++/v1/__functional/invoke.h:61 (tiflash+0x28bb7b3)
    #21 std::__1::__function::__alloc_func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0x28bb7b3)
    #22 std::__1::__function::__func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0x28bb7b3)
    #23 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x28203f1)
    #24 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x28203f1)
    #25 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::worker(std::__1::__list_iterator<DB::ThreadFromGlobalPoolImpl<false>, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:306 (tiflash+0x28203f1)
    #26 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x282360c)
    #27 decltype ((static_cast<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&>({parm#1}))()) std::__1::__invoke_constexpr<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, (DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3924 (tiflash+0x282360c)
    #28 decltype(auto) std::__1::__apply_tuple_impl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1536 (tiflash+0x282360c)
    #29 decltype(auto) std::__1::apply<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1545 (tiflash+0x282360c)
    #30 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:235 (tiflash+0x282360c)
    #31 _ZNSt3__18__invokeIRZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS1_14ThreadPoolImplIS3_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS8_DpOT0_EUlvE_JEEEDTclscS8_fp_spscSG_fp0_EESF_SI_ /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x282360c)
    #32 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&>(DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0x282360c)
    #33 _ZNSt3__110__function12__alloc_funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0x282360c)
    #34 _ZNSt3__110__function6__funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0x282360c)
    #35 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x281dc3a)
    #36 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x281dc3a)
    #37 DB::ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:306 (tiflash+0x281dc3a)
    #38 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x28216c0)
    #39 decltype ((static_cast<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>({parm#1}))()) std::__1::__invoke<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&, (DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28216c0)
    #40 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:280 (tiflash+0x28216c0)
    #41 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:291 (tiflash+0x28216c0)

  Thread T417 'ThreadPool' (tid=3339254, running) created by thread T403 at:
    #0 pthread_create /root/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:977 (tiflash+0x2689b8d)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__threading_support:514 (tiflash+0x28210c8)
    #2 thread<(lambda at /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160:42), void> /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:307 (tiflash+0x28210c8)
    #3 void DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x281c16c)
    #4 DB::ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, long, unsigned long, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:198 (tiflash+0x2822dd4)
    #5 ThreadFromGlobalPoolImpl<(lambda at /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160:42)> /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:218 (tiflash+0x2822dd4)
    #6 void DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x281e6fb)
    #7 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleOrThrowOnError(std::__1::function<void ()>, long) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:182 (tiflash+0x281e2f2)
    #8 DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:327 (tiflash+0x28ba0ae)
    #9 DB::DatabaseTiFlash::loadTables(DB::Context&, DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >*, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Databases/DatabaseTiFlash.cpp:201 (tiflash+0xb4ba481)
    #10 DB::InterpreterCreateQuery::createDatabase(DB::ASTCreateQuery&) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/InterpreterCreateQuery.cpp:170 (tiflash+0xb77a09f)
    #11 DB::InterpreterCreateQuery::execute() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/InterpreterCreateQuery.cpp:675 (tiflash+0xb78212b)
    #12 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&, DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >*, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:62 (tiflash+0xbf1ae1a)
    #13 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:173 (tiflash+0xbf1b3e7)
    #14 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:199 (tiflash+0xbf1b3e7)
    #15 decltype ((static_cast<DB::loadMetadata(DB::Context&)::$_3&>({parm#1}))()) std::__1::__invoke<DB::loadMetadata(DB::Context&)::$_3&>(DB::loadMetadata(DB::Context&)::$_3&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0xbf1b3e7)
    #16 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::loadMetadata(DB::Context&)::$_3&>(DB::loadMetadata(DB::Context&)::$_3&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0xbf1b3e7)
    #17 std::__1::__function::__alloc_func<DB::loadMetadata(DB::Context&)::$_3, std::__1::allocator<DB::loadMetadata(DB::Context&)::$_3>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0xbf1b3e7)
    #18 std::__1::__function::__func<DB::loadMetadata(DB::Context&)::$_3, std::__1::allocator<DB::loadMetadata(DB::Context&)::$_3>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0xbf1b3e7)
    #19 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x28bb414)
    #20 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x28bb414)
    #21 decltype ((static_cast<std::__1::function<void ()>&>({parm#1}))()) std::__1::__invoke<std::__1::function<void ()>&>(std::__1::function<void ()>&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28bb414)
    #22 std::__1::__packaged_task_func<std::__1::function<void ()>, std::__1::allocator<std::__1::function<void ()> >, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:1687 (tiflash+0x28bb414)
    #23 std::__1::__packaged_task_function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:1869 (tiflash+0x28bb8bd)
    #24 std::__1::packaged_task<void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/future:2089 (tiflash+0x28bb8bd)
    #25 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:327 (tiflash+0x28bb7b3)
    #26 decltype ((static_cast<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>({parm#1}))()) std::__1::__invoke<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>(DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&, (DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28bb7b3)
    #27 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&>(DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0x28bb7b3)
    #28 std::__1::__function::__alloc_func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0x28bb7b3)
    #29 std::__1::__function::__func<DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>)::{lambda()#1}, std::__1::allocator<{lambda()#1}>, void ()>::operator()() /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0x28bb7b3)
    #30 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x28203f1)
    #31 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x28203f1)
    #32 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::worker(std::__1::__list_iterator<DB::ThreadFromGlobalPoolImpl<false>, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:306 (tiflash+0x28203f1)
    #33 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x282360c)
    #34 decltype ((static_cast<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&>({parm#1}))()) std::__1::__invoke_constexpr<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, (DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3924 (tiflash+0x282360c)
    #35 decltype(auto) std::__1::__apply_tuple_impl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1536 (tiflash+0x282360c)
    #36 decltype(auto) std::__1::apply<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&, std::__1::tuple<>&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/tuple:1545 (tiflash+0x282360c)
    #37 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:235 (tiflash+0x282360c)
    #38 _ZNSt3__18__invokeIRZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS1_14ThreadPoolImplIS3_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS8_DpOT0_EUlvE_JEEEDTclscS8_fp_spscSG_fp0_EESF_SI_ /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x282360c)
    #39 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&>(DB::ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)::{lambda()#1}&) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/invoke.h:61 (tiflash+0x282360c)
    #40 _ZNSt3__110__function12__alloc_funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:171 (tiflash+0x282360c)
    #41 _ZNSt3__110__function6__funcIZN2DB24ThreadFromGlobalPoolImplILb0EEC1IZNS2_14ThreadPoolImplIS4_E12scheduleImplIvEET_NS_8functionIFvvEEElNS_8optionalImEEbEUlvE0_JEEEOS9_DpOT0_EUlvE_NS_9allocatorISK_EESB_EclEv /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:345 (tiflash+0x282360c)
    #42 std::__1::__function::__value_func<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:498 (tiflash+0x281dc3a)
    #43 std::__1::function<void ()>::operator()() const /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__functional/function.h:1175 (tiflash+0x281dc3a)
    #44 DB::ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:306 (tiflash+0x281dc3a)
    #45 operator() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x28216c0)
    #46 decltype ((static_cast<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>({parm#1}))()) std::__1::__invoke<DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&, (DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}&&)...) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/type_traits:3918 (tiflash+0x28216c0)
    #47 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>&, std::__1::__tuple_indices<>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:280 (tiflash+0x28216c0)
    #48 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}> >(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool)::{lambda()#2}>) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:291 (tiflash+0x28216c0)

  Thread T403 'ThreadPool' (tid=3339240, running) created by main thread at:
    #0 pthread_create /root/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:977 (tiflash+0x2689b8d)
    #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/__threading_support:514 (tiflash+0x28210c8)
    #2 thread<(lambda at /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160:42), void> /DATA/disk1/ra_common/tiflash-env-13/sysroot/bin/../include/c++/v1/thread:307 (tiflash+0x28210c8)
    #3 void DB::ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x281c16c)
    #4 DB::ThreadPoolImpl<std::__1::thread>::scheduleOrThrow(std::__1::function<void ()>, long, unsigned long, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:198 (tiflash+0x2822dd4)
    #5 ThreadFromGlobalPoolImpl<(lambda at /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160:42)> /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:218 (tiflash+0x2822dd4)
    #6 void DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleImpl<void>(std::__1::function<void ()>, long, std::__1::optional<unsigned long>, bool) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:160 (tiflash+0x281e6fb)
    #7 DB::ThreadPoolImpl<DB::ThreadFromGlobalPoolImpl<false> >::scheduleOrThrowOnError(std::__1::function<void ()>, long) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.cpp:182 (tiflash+0x281e2f2)
    #8 DB::ThreadPoolWaitGroup<DB::ThreadFromGlobalPoolImpl<false> >::schedule(std::__1::function<void ()>) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Common/UniThreadPool.h:327 (tiflash+0x28ba0ae)
    #9 DB::loadMetadata(DB::Context&) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Interpreters/loadMetadata.cpp:202 (tiflash+0xbf19f54)
    #10 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&) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Server/Server.cpp:1507 (tiflash+0x27e9dd8)
    #11 Poco::Util::Application::run() /DATA/disk1/jaysonhuang/tiflash-2/contrib/poco/Util/src/Application.cpp:335 (tiflash+0xe0c6d1b)
    #12 Poco::Util::ServerApplication::run() /DATA/disk1/jaysonhuang/tiflash-2/contrib/poco/Util/src/ServerApplication.cpp:94 (tiflash+0xe0e2269)
    #13 DB::Server::run() /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Server/Server.cpp:262 (tiflash+0x27e2e66)
    #14 Poco::Util::ServerApplication::run(int, char**) /DATA/disk1/jaysonhuang/tiflash-2/contrib/poco/Util/src/ServerApplication.cpp:618 (tiflash+0xe0e24c2)
    #15 mainEntryClickHouseServer(int, char**) /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Server/Server.cpp:1833 (tiflash+0x27efea9)
    #16 main /DATA/disk1/jaysonhuang/tiflash-2/dbms/src/Server/main.cpp:173 (tiflash+0x27005f7)

SUMMARY: ThreadSanitizer: data race /root/llvm-project/compiler-rt/lib/tsan/rtl/tsan_new_delete.cpp:126 in operator delete(void*)
==================
4. What is your TiFlash version? (Required)

v7.5.4

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inspecting dbms/src/Interpreters/loadMetadata.cpp around lines 62, 173, and 199, then trace the wait in dbms/src/Databases/DatabaseTiFlash.cpp:207 and the thread-pool paths in dbms/src/Common/UniThreadPool.cpp. Reproduce the metadata-loading scenario under ThreadSanitizer if a reproduction can be established from the report. Done means the reported race no longer appears during metadata loading.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend, databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.