Suspicious data race in `DB::loadMetadata`
Open
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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