Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-41805

False positive TSan race under FollyExecutorPool due to mixed GCC / Clang built libraries

    XMLWordPrintable

Details

    • Triaged
    • 1
    • Unknown
    • KV Sprint 2020-Oct

    Description

      When switching executor pool to FollyExecutorPool (http://review.couchbase.org/c/kv_engine/+/135709), the following TSan race is observed:

      Running [0013/0099]: test dcp consumer noop...==================
       WARNING: ThreadSanitizer: data race (pid=14065)
         Write of size 4 at 0x7fdfb95d70d8 by thread T10:
           #0 std::__atomic_base<unsigned int>::__atomic_base(unsigned int) /usr/local/include/c++/7.3.0/bits/atomic_base.h:256 (libep.so+0x598d7b)
           #1 std::atomic<unsigned int>::atomic(unsigned int) /usr/local/include/c++/7.3.0/atomic:695 (libep.so+0x598d7b)
           #2 void folly::detail::LifoSemNode<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::init<>() folly/synchronization/SaturatingSemaphore.h:136 (libep.so+0x598d7b)
           #3 std::unique_ptr<folly::detail::LifoSemNode<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>, folly::detail::LifoSemNodeRecycler<folly::SaturatingSemaphore<true, std::atomic>, std::atomic> > folly::detail::LifoSemBase<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::allocateNode<>() folly/synchronization/LifoSem.h:582 (libep.so+0x598d7b)
           #4 bool folly::detail::LifoSemBase<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::try_wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) folly/synchronization/LifoSem.h:512 (libep.so+0x598d7b)
           #5 bool folly::detail::LifoSemBase<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::try_wait_for<long, std::ratio<1l, 1000l> >(std::chrono::duration<long, std::ratio<1l, 1000l> > const&) folly/synchronization/LifoSem.h:498 (libep.so+0x59ee84)
           #6 folly::UnboundedBlockingQueue<folly::CPUThreadPoolExecutor::CPUTask>::try_take_for(std::chrono::duration<long, std::ratio<1l, 1000l> >) folly/executors/task_queue/UnboundedBlockingQueue.h:41 (libep.so+0x59ee84)
           #7 folly::CPUThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>) folly/executors/CPUThreadPoolExecutor.cpp:243 (libep.so+0x58af8d)
           #8 void std::__invoke_impl<void, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(std::__invoke_memfun_deref, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:73 (libep.so+0x5babab)
           #9 std::__invoke_result<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>::type std::__invoke<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:95 (libep.so+0x5babab)
           #10 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::__call<void, 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/local/include/c++/7.3.0/functional:467 (libep.so+0x5babab)
           #11 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::operator()<void>() /usr/local/include/c++/7.3.0/functional:551 (libep.so+0x5babab)
           #12 void folly::detail::function::FunctionTraits<void ()>::callBig<std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)> >(folly::detail::function::Data&) folly/Function.h:401 (libep.so+0x5babab)
           #13 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416:12 (libep.so+0x35390c)
           #14 folly::PriorityThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()::operator()() folly/executors/thread_factory/PriorityThreadFactory.h:54:7 (libep.so+0x3545ec)
           #15 void folly::detail::function::FunctionTraits<void ()>::callBig<folly::PriorityThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(folly::detail::function::Data&) folly/Function.h:401:7 (libep.so+0x35449d)
           #16 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416:12 (libep.so+0x35390c)
           #17 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()::operator()() folly/executors/thread_factory/NamedThreadFactory.h:40:11 (libep.so+0x3538d3)
           #18 void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60:14 (libep.so+0x35387d)
           #19 std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95:14 (libep.so+0x3537ed)
           #20 decltype(std::__invoke(_S_declval<0ul>())) std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234:13 (libep.so+0x3537b5)
           #21 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243:11 (libep.so+0x353775)
           #22 std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186:13 (libep.so+0x3535f9)
           #23 execute_native_thread_routine /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:83 (libstdc++.so.6+0xb995e)
       
         Previous atomic write of size 4 at 0x7fdfb95d70d8 by thread T9:
           #0 __tsan_atomic32_compare_exchange_strong <null> (ep_testsuite_dcp+0x4f1bca)
           #1 std::__atomic_base<unsigned int>::compare_exchange_strong(unsigned int&, unsigned int, std::memory_order, std::memory_order) /usr/local/include/c++/7.3.0/bits/atomic_base.h:477 (libep.so+0x597d9a)
           #2 folly::SaturatingSemaphore<true, std::atomic>::postFastWaiterMayBlock() folly/synchronization/SaturatingSemaphore.h:197 (libep.so+0x597d9a)
           #3 folly::SaturatingSemaphore<true, std::atomic>::post() folly/synchronization/SaturatingSemaphore.h:156 (libep.so+0x597d9a)
           #4 folly::detail::LifoSemBase<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::post() folly/synchronization/LifoSem.h:379 (libep.so+0x597d9a)
           #5 folly::UnboundedBlockingQueue<folly::CPUThreadPoolExecutor::CPUTask>::add(folly::CPUThreadPoolExecutor::CPUTask) folly/executors/task_queue/UnboundedBlockingQueue.h:32 (libep.so+0x59db05)
           #6 folly::CPUThreadPoolExecutor::add(folly::Function<void ()>, std::chrono::duration<long, std::ratio<1l, 1000l> >, folly::Function<void ()>) folly/executors/CPUThreadPoolExecutor.cpp:175 (libep.so+0x58800e)
           #7 folly::CPUThreadPoolExecutor::add(folly::Function<void ()>) folly/executors/CPUThreadPoolExecutor.cpp:164 (libep.so+0x5875a9)
           #8 FollyExecutorPool::TaskProxy::~TaskProxy() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:76:17 (libep.so+0x35f2d8)
           #9 void __gnu_cxx::new_allocator<FollyExecutorPool::TaskProxy>::destroy<FollyExecutorPool::TaskProxy>(FollyExecutorPool::TaskProxy*) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/ext/new_allocator.h:140:28 (libep.so+0x35fe2d)
           #10 void std::allocator_traits<std::allocator<FollyExecutorPool::TaskProxy> >::destroy<FollyExecutorPool::TaskProxy>(std::allocator<FollyExecutorPool::TaskProxy>&, FollyExecutorPool::TaskProxy*) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/alloc_traits.h:487:8 (libep.so+0x35fdce)
           #11 std::_Sp_counted_ptr_inplace<FollyExecutorPool::TaskProxy, std::allocator<FollyExecutorPool::TaskProxy>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/shared_ptr_base.h:535:2 (libep.so+0x35efbf)
           #12 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/shared_ptr_base.h:154:6 (ep_testsuite_dcp+0x553d7c)
           #13 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/shared_ptr_base.h:684:11 (ep_testsuite_dcp+0x553d42)
           #14 std::__shared_ptr<FollyExecutorPool::TaskProxy, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/shared_ptr_base.h:1123:31 (libep.so+0x355bf9)
           #15 FollyExecutorPool::TaskProxy::scheduleViaCPUPool()::'lambda'()::operator()() const::'lambda'()::~() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:195:21 (libep.so+0x358785)
           #16 unsigned long folly::detail::function::execSmall<FollyExecutorPool::TaskProxy::scheduleViaCPUPool()::'lambda'()::operator()() const::'lambda'()>(folly::detail::function::Op, folly::detail::function::Data*, folly::detail::function::Data*) folly/Function.h:592:59 (libep.so+0x358969)
           #17 folly::Function<void ()>::exec(folly::detail::function::Op, folly::detail::function::Data*, folly::detail::function::Data*) const folly/Function.h:649 (libep.so+0x5cd80a)
           #18 folly::Function<void ()>::~Function() folly/Function.h:781 (libep.so+0x5cd80a)
           #19 folly::NotificationQueue<folly::Function<void ()> >::Node::~Node() folly/io/async/NotificationQueue.h:70 (libep.so+0x5cd80a)
           #20 std::default_delete<folly::NotificationQueue<folly::Function<void ()> >::Node>::operator()(folly::NotificationQueue<folly::Function<void ()> >::Node*) const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:78 (libep.so+0x5cd80a)
           #21 std::unique_ptr<folly::NotificationQueue<folly::Function<void ()> >::Node, std::default_delete<folly::NotificationQueue<folly::Function<void ()> >::Node> >::reset(folly::NotificationQueue<folly::Function<void ()> >::Node*) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:376 (libep.so+0x5cd80a)
           #22 folly::NotificationQueue<folly::Function<void ()> >::Consumer::consumeMessages(bool, unsigned long*) folly/io/async/NotificationQueue.h:733 (libep.so+0x5cd80a)
           #23 folly::NotificationQueue<folly::Function<void ()> >::Consumer::handlerReady(unsigned short) folly/io/async/NotificationQueue.h:663 (libep.so+0x5cdb09)
           #24 folly::EventHandler::libeventCallback(int, short, void*) folly/io/async/EventHandler.cpp:158 (libep.so+0x5d20e0)
           #25 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1629 (libevent_core-2.1.so.7+0x17f39)
           #26 event_process_active_single_queue.isra.31 /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1688 (libevent_core-2.1.so.7+0x17f39)
           #27 folly::EventBase::loopBody(int, bool) folly/io/async/EventBase.cpp:397 (libep.so+0x5c3e3a)
           #28 folly::EventBase::loop() folly/io/async/EventBase.cpp:315 (libep.so+0x5c430f)
           #29 folly::EventBase::loopForever() folly/io/async/EventBase.cpp:538 (libep.so+0x5c60c7)
           #30 folly::IOThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>) folly/executors/IOThreadPoolExecutor.cpp:195 (libep.so+0x5a6ee8)
           #31 void std::__invoke_impl<void, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(std::__invoke_memfun_deref, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:73 (libep.so+0x5babab)
           #32 std::__invoke_result<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>::type std::__invoke<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:95 (libep.so+0x5babab)
           #33 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::__call<void, 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/local/include/c++/7.3.0/functional:467 (libep.so+0x5babab)
           #34 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::operator()<void>() /usr/local/include/c++/7.3.0/functional:551 (libep.so+0x5babab)
           #35 void folly::detail::function::FunctionTraits<void ()>::callBig<std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)> >(folly::detail::function::Data&) folly/Function.h:401 (libep.so+0x5babab)
           #36 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416:12 (libep.so+0x35390c)
           #37 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()::operator()() folly/executors/thread_factory/NamedThreadFactory.h:40:11 (libep.so+0x3538d3)
           #38 void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60:14 (libep.so+0x35387d)
           #39 std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95:14 (libep.so+0x3537ed)
           #40 decltype(std::__invoke(_S_declval<0ul>())) std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234:13 (libep.so+0x3537b5)
           #41 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243:11 (libep.so+0x353775)
           #42 std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186:13 (libep.so+0x3535f9)
           #43 execute_native_thread_routine /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:83 (libstdc++.so.6+0xb995e)
       
         Thread T10 'NonIoPool0' (tid=14466, running) created by thread T9 at:
           #0 pthread_create <null> (ep_testsuite_dcp+0x4a184b)
           #1 __gthread_create /tmp/deploy/objdir/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:662 (libstdc++.so.6+0xb9c14)
           #2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:163 (libstdc++.so.6+0xb9c14)
           #3 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&) folly/executors/thread_factory/NamedThreadFactory.h:37:12 (libep.so+0x352902)
           #4 folly::PriorityThreadFactory::newThread(folly::Function<void ()>&&) folly/executors/thread_factory/PriorityThreadFactory.h:49:22 (libep.so+0x35414d)
           #5 CBPriorityThreadFactory::newThread(folly::Function<void ()>&&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:46:38 (libep.so+0x351d31)
           #6 folly::ThreadPoolExecutor::addThreads(unsigned long) folly/executors/ThreadPoolExecutor.cpp:223 (libep.so+0x5b7f65)
           #7 folly::ThreadPoolExecutor::ensureActiveThreads() folly/executors/ThreadPoolExecutor.cpp:496 (libep.so+0x5b8ef2)
           #8 folly::CPUThreadPoolExecutor::add(folly::Function<void ()>, std::chrono::duration<long, std::ratio<1l, 1000l> >, folly::Function<void ()>) folly/executors/CPUThreadPoolExecutor.cpp:177 (libep.so+0x588026)
           #9 folly::CPUThreadPoolExecutor::add(folly::Function<void ()>) folly/executors/CPUThreadPoolExecutor.cpp:164 (libep.so+0x5875a9)
           #10 FollyExecutorPool::TaskProxy::scheduleViaCPUPool() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:138:17 (libep.so+0x350d2c)
           #11 FollyExecutorPool::TaskProxy::updateTimeoutFromWakeTime() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:228:13 (libep.so+0x35d521)
           #12 FollyExecutorPool::State::scheduleTask(FollyExecutorPool&, folly::CPUThreadPoolExecutor&, std::shared_ptr<GlobalTask>) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:326:21 (libep.so+0x35d24d)
           #13 FollyExecutorPool::schedule(std::shared_ptr<GlobalTask>)::$_7::operator()() const /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:700:16 (libep.so+0x34f238)
           #14 void folly::detail::function::FunctionTraits<void ()>::callSmall<FollyExecutorPool::schedule(std::shared_ptr<GlobalTask>)::$_7>(folly::detail::function::Data&) folly/Function.h:387:7 (libep.so+0x34f175)
           #15 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416 (libep.so+0x5bed6c)
           #16 operator() folly/io/async/EventBase.cpp:671 (libep.so+0x5bed6c)
           #17 void folly::detail::function::FunctionTraits<void ()>::callBig<folly::EventBase::runInEventBaseThreadAndWait(folly::Function<void ()>)::'lambda'()>(folly::detail::function::Data&) folly/Function.h:401 (libep.so+0x5bed6c)
           #18 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416 (libep.so+0x5cd7c2)
           #19 folly::EventBase::FunctionRunner::messageAvailable(folly::Function<void ()>&&) folly/io/async/EventBase.cpp:137 (libep.so+0x5cd7c2)
           #20 folly::NotificationQueue<folly::Function<void ()> >::Consumer::consumeMessages(bool, unsigned long*) folly/io/async/NotificationQueue.h:729 (libep.so+0x5cd7c2)
           #21 folly::NotificationQueue<folly::Function<void ()> >::Consumer::handlerReady(unsigned short) folly/io/async/NotificationQueue.h:663 (libep.so+0x5cdb09)
           #22 folly::EventHandler::libeventCallback(int, short, void*) folly/io/async/EventHandler.cpp:158 (libep.so+0x5d20e0)
           #23 event_persist_closure /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1629 (libevent_core-2.1.so.7+0x17f39)
           #24 event_process_active_single_queue.isra.31 /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/libevent/libevent-prefix/src/libevent/event.c:1688 (libevent_core-2.1.so.7+0x17f39)
           #25 folly::EventBase::loopBody(int, bool) folly/io/async/EventBase.cpp:397 (libep.so+0x5c3e3a)
           #26 folly::EventBase::loop() folly/io/async/EventBase.cpp:315 (libep.so+0x5c430f)
           #27 folly::EventBase::loopForever() folly/io/async/EventBase.cpp:538 (libep.so+0x5c60c7)
           #28 folly::IOThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>) folly/executors/IOThreadPoolExecutor.cpp:195 (libep.so+0x5a6ee8)
           #29 void std::__invoke_impl<void, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(std::__invoke_memfun_deref, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:73 (libep.so+0x5babab)
           #30 std::__invoke_result<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>::type std::__invoke<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&) /usr/local/include/c++/7.3.0/bits/invoke.h:95 (libep.so+0x5babab)
           #31 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::__call<void, 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/local/include/c++/7.3.0/functional:467 (libep.so+0x5babab)
           #32 void std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::operator()<void>() /usr/local/include/c++/7.3.0/functional:551 (libep.so+0x5babab)
           #33 void folly::detail::function::FunctionTraits<void ()>::callBig<std::_Bind<void (folly::ThreadPoolExecutor::* (folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)> >(folly::detail::function::Data&) folly/Function.h:401 (libep.so+0x5babab)
           #34 folly::detail::function::FunctionTraits<void ()>::operator()() folly/Function.h:416:12 (libep.so+0x35390c)
           #35 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()::operator()() folly/executors/thread_factory/NamedThreadFactory.h:40:11 (libep.so+0x3538d3)
           #36 void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60:14 (libep.so+0x35387d)
           #37 std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95:14 (libep.so+0x3537ed)
           #38 decltype(std::__invoke(_S_declval<0ul>())) std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234:13 (libep.so+0x3537b5)
           #39 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243:11 (libep.so+0x353775)
           #40 std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186:13 (libep.so+0x3535f9)
           #41 execute_native_thread_routine /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:83 (libstdc++.so.6+0xb995e)
       
         Thread T9 'SchedulerPool0' (tid=14461, running) created by main thread at:
           #0 pthread_create <null> (ep_testsuite_dcp+0x4a184b)
           #1 __gthread_create /tmp/deploy/objdir/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:662 (libstdc++.so.6+0xb9c14)
           #2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:163 (libstdc++.so.6+0xb9c14)
           #3 folly::ThreadPoolExecutor::ensureActiveThreads() folly/executors/ThreadPoolExecutor.cpp:496 (libep.so+0x5b8ef2)
           #4 folly::IOThreadPoolExecutor::getEventBase() folly/executors/IOThreadPoolExecutor.cpp:155 (libep.so+0x5a79f2)
           #5 FollyExecutorPool::registerTaskable(Taskable&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/folly_executorpool.cc:605:17 (libep.so+0x34c4a4)
           #6 KVBucket::KVBucket(EventuallyPersistentEngine&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/kv_bucket.cc:323:26 (libep.so+0x38c72d)
           #7 EphemeralBucket::EphemeralBucket(EventuallyPersistentEngine&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/ephemeral_bucket.cc:96:7 (libep.so+0x32bf17)
           #8 std::_MakeUniq<EphemeralBucket>::__single_object std::make_unique<EphemeralBucket, EventuallyPersistentEngine&>(EventuallyPersistentEngine&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/unique_ptr.h:825:34 (libep.so+0x2f7154)
           #9 EventuallyPersistentEngine::makeBucket(Configuration&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/ep_engine.cc:6539:16 (libep.so+0x2e0553)
           #10 EventuallyPersistentEngine::initialize(char const*) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/engines/ep/src/ep_engine.cc:2247:16 (libep.so+0x2dffc9)
           #11 MockTestHarness::create_bucket(bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/programs/engine_testapp/engine_testapp.cc:212:52 (ep_testsuite_dcp+0x55d227)
           #12 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/programs/engine_testapp/engine_testapp.cc:366:43 (ep_testsuite_dcp+0x55c1c5)
           #13 main /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/build/../kv_engine/programs/engine_testapp/engine_testapp.cc:629:37 (ep_testsuite_dcp+0x55b64b)
       
       SUMMARY: ThreadSanitizer: data race /usr/local/include/c++/7.3.0/bits/atomic_base.h:256 in std::__atomic_base<unsigned int>::__atomic_base(unsigned int)
      

      Log: http://cv.jenkins.couchbase.com/job/kv_engine.threadsanitizer/job/master/6267/consoleFull#-66333012461882284-c5b1-40af-8076-4f8cb2d12fb1

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              drigby Dave Rigby (Inactive)
              drigby Dave Rigby (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  PagerDuty