Skip to content

Instantly share code, notes, and snippets.

@daverigby
Created September 9, 2020 09:03
Show Gist options
  • Save daverigby/fa268b48d89220d4cac4b81033a70e66 to your computer and use it in GitHub Desktop.
Save daverigby/fa268b48d89220d4cac4b81033a70e66 to your computer and use it in GitHub Desktop.
[ RUN ] ExecutorPoolEpEngineTest/1.cancel_can_schedule
[New Thread 0x7ffff1547700 (LWP 11270)]
==================
WARNING: ThreadSanitizer: data race (pid=11268)
Write of size 4 at 0x7fffffffde5c by main thread:
#0 folly::EventBase::runInEventBaseThreadAndWait(folly::Function<void ()>) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:661 (ep-engine_ep_unit_tests+0x00000171e04e)
#1 FollyExecutorPool::unregisterTaskable(Taskable&, bool) ../kv_engine/engines/ep/src/folly_executorpool.cc:615 (ep-engine_ep_unit_tests+0x00000062f2b1)
#2 KVBucket::deinitialize() ../kv_engine/engines/ep/src/kv_bucket.cc:489 (ep-engine_ep_unit_tests+0x000000676e45)
#3 EPBucket::deinitialize() ../kv_engine/engines/ep/src/ep_bucket.cc:316 (ep-engine_ep_unit_tests+0x0000005ae8d8)
#4 EventuallyPersistentEngine::~EventuallyPersistentEngine() ../kv_engine/engines/ep/src/ep_engine.cc:6548 (ep-engine_ep_unit_tests+0x0000005ebea4)
#5 SynchronousEPEngine::~SynchronousEPEngine() ../kv_engine/engines/ep/tests/mock/mock_synchronous_ep_engine.h:43 (ep-engine_ep_unit_tests+0x0000007f6979)
#6 SynchronousEPEngine::~SynchronousEPEngine() ../kv_engine/engines/ep/tests/mock/mock_synchronous_ep_engine.h:43 (ep-engine_ep_unit_tests+0x0000007f6979)
#7 SynchronousEPEngineDeleter::operator()(SynchronousEPEngine*) ../kv_engine/engines/ep/tests/mock/mock_synchronous_ep_engine.cc:129 (ep-engine_ep_unit_tests+0x0000007f581b)
#8 std::unique_ptr<SynchronousEPEngine, SynchronousEPEngineDeleter>::reset(SynchronousEPEngine*) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:376 (ep-engine_ep_unit_tests+0x0000012d89ea)
#9 ExecutorPoolEpEngineTest<FollyExecutorPool>::TearDown() ../kv_engine/engines/ep/tests/module_tests/executorpool_test.cc:1001 (ep-engine_ep_unit_tests+0x0000012d89ea)
#10 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x000001662a28)
#11 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x000001662a28)
#12 testing::Test::Run() ../third_party/googletest/googletest/src/gtest.cc:2516 (ep-engine_ep_unit_tests+0x00000164e628)
#13 testing::TestInfo::Run() ../third_party/googletest/googletest/src/gtest.cc:2684 (ep-engine_ep_unit_tests+0x00000164e904)
#14 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2816 (ep-engine_ep_unit_tests+0x00000164ebe1)
#15 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (ep-engine_ep_unit_tests+0x000001655d2e)
#16 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x0000016562f3)
#17 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x0000016562f3)
#18 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (ep-engine_ep_unit_tests+0x0000016562f3)
#19 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (ep-engine_ep_unit_tests+0x000000f9ea58)
#20 main ../kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:175 (ep-engine_ep_unit_tests+0x000000f9ea58)
Previous atomic write of size 4 at 0x7fffffffde5c by thread T1:
#0 __tsan_atomic32_compare_exchange_strong <null> (libtsan.so.0+0x000000064842)
#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 (ep-engine_ep_unit_tests+0x000001716be7)
#2 folly::Baton<true, std::atomic>::post() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/synchronization/Baton.h:140 (ep-engine_ep_unit_tests+0x000001716be7)
#3 operator() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:664 (ep-engine_ep_unit_tests+0x000001716be7)
#4 catch_exception<folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> mutable::<lambda()>&, folly::detail::ScopeGuardImpl<FunctionType, InvokeNoexcept>::execute() [with FunctionType = folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> mutable::<lambda()>; bool InvokeNoexcept = true]::<lambda()>&> /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/lang/Exception.h:230 (ep-engine_ep_unit_tests+0x000001716be7)
#5 execute /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/ScopeGuard.h:126 (ep-engine_ep_unit_tests+0x000001716be7)
#6 ~ScopeGuardImpl /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/ScopeGuard.h:98 (ep-engine_ep_unit_tests+0x000001716be7)
#7 operator() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:665 (ep-engine_ep_unit_tests+0x000001716be7)
#8 callBig<folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> > /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/Function.h:401 (ep-engine_ep_unit_tests+0x000001716be7)
#9 folly::detail::function::FunctionTraits<void ()>::operator()() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/Function.h:416 (ep-engine_ep_unit_tests+0x000001725a82)
#10 folly::EventBase::FunctionRunner::messageAvailable(folly::Function<void ()>&&) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:135 (ep-engine_ep_unit_tests+0x000001725a82)
#11 folly::NotificationQueue<folly::Function<void ()> >::Consumer::consumeMessages(bool, unsigned long*) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/NotificationQueue.h:729 (ep-engine_ep_unit_tests+0x000001725a82)
#12 folly::NotificationQueue<folly::Function<void ()> >::Consumer::handlerReady(unsigned short) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/NotificationQueue.h:663 (ep-engine_ep_unit_tests+0x000001725e09)
#13 folly::EventHandler::libeventCallback(int, short, void*) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventHandler.cpp:158 (ep-engine_ep_unit_tests+0x00000172a420)
#14 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+0x000000017f39)
#15 event_process_active_single_queue /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+0x000000017f39)
#16 folly::EventBase::loopBody(int, bool) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:394 (ep-engine_ep_unit_tests+0x00000171bc0a)
#17 folly::EventBase::loop() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:312 (ep-engine_ep_unit_tests+0x00000171dd1b)
#18 folly::EventBase::loopForever() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:535 (ep-engine_ep_unit_tests+0x00000171dd1b)
#19 folly::IOThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/executors/IOThreadPoolExecutor.cpp:184 (ep-engine_ep_unit_tests+0x0000016ff840)
#20 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 (ep-engine_ep_unit_tests+0x000001712dfb)
#21 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 (ep-engine_ep_unit_tests+0x000001712dfb)
#22 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 (ep-engine_ep_unit_tests+0x000001712dfb)
#23 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 (ep-engine_ep_unit_tests+0x000001712dfb)
#24 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&) /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/Function.h:401 (ep-engine_ep_unit_tests+0x000001712dfb)
#25 folly::detail::function::FunctionTraits<void ()>::operator()() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/Function.h:416 (ep-engine_ep_unit_tests+0x00000063177a)
#26 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}::operator()() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/executors/thread_factory/NamedThreadFactory.h:40 (ep-engine_ep_unit_tests+0x00000063177a)
#27 void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&) /usr/local/include/c++/7.3.0/bits/invoke.h:60 (ep-engine_ep_unit_tests+0x00000063177a)
#28 std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_result&&, (folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&)...) /usr/local/include/c++/7.3.0/bits/invoke.h:95 (ep-engine_ep_unit_tests+0x00000063177a)
#29 decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/local/include/c++/7.3.0/thread:234 (ep-engine_ep_unit_tests+0x00000063177a)
#30 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::operator()() /usr/local/include/c++/7.3.0/thread:243 (ep-engine_ep_unit_tests+0x00000063177a)
#31 std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> > >::_M_run() /usr/local/include/c++/7.3.0/thread:186 (ep-engine_ep_unit_tests+0x00000063177a)
#32 execute_native_thread_routine /tmp/deploy/objdir/../gcc-7.3.0/libstdc++-v3/src/c++11/thread.cc:83 (libstdc++.so.6+0x0000000b995e)
Location is stack of main thread.
Thread T1 'SchedulerPool0' (tid=11270, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
#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+0x0000000b9c14)
#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+0x0000000b9c14)
#3 folly::ThreadPoolExecutor::ensureActiveThreads() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/executors/ThreadPoolExecutor.cpp:466 (ep-engine_ep_unit_tests+0x000001710fba)
#4 folly::IOThreadPoolExecutor::getEventBase() /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/executors/IOThreadPoolExecutor.cpp:144 (ep-engine_ep_unit_tests+0x000001701842)
#5 FollyExecutorPool::registerTaskable(Taskable&) ../kv_engine/engines/ep/src/folly_executorpool.cc:554 (ep-engine_ep_unit_tests+0x00000062af34)
#6 KVBucket::KVBucket(EventuallyPersistentEngine&) ../kv_engine/engines/ep/src/kv_bucket.cc:323 (ep-engine_ep_unit_tests+0x000000670bf1)
#7 EPBucket::EPBucket(EventuallyPersistentEngine&) ../kv_engine/engines/ep/src/ep_bucket.cc:255 (ep-engine_ep_unit_tests+0x0000005a236b)
#8 MockEPBucket::MockEPBucket(EventuallyPersistentEngine&) ../kv_engine/engines/ep/tests/mock/mock_ep_bucket.cc:30 (ep-engine_ep_unit_tests+0x0000007dc2ed)
#9 std::_MakeUniq<testing::NiceMock<MockEPBucket> >::__single_object std::make_unique<testing::NiceMock<MockEPBucket>, SynchronousEPEngine&>(SynchronousEPEngine&) ../third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h:87 (ep-engine_ep_unit_tests+0x0000007f5b82)
#10 SynchronousEPEngine::public_makeMockBucket(Configuration&) ../kv_engine/engines/ep/tests/mock/mock_synchronous_ep_engine.cc:141 (ep-engine_ep_unit_tests+0x0000007f5b82)
#11 SynchronousEPEngine::build(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../kv_engine/engines/ep/tests/mock/mock_synchronous_ep_engine.cc:120 (ep-engine_ep_unit_tests+0x0000007f67b5)
#12 ExecutorPoolEpEngineTest<FollyExecutorPool>::SetUp() ../kv_engine/engines/ep/tests/module_tests/executorpool_test.cc:995 (ep-engine_ep_unit_tests+0x0000012d8ae8)
#13 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x000001662a28)
#14 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x000001662a28)
#15 testing::Test::Run() ../third_party/googletest/googletest/src/gtest.cc:2503 (ep-engine_ep_unit_tests+0x00000164e58e)
#16 testing::TestInfo::Run() ../third_party/googletest/googletest/src/gtest.cc:2684 (ep-engine_ep_unit_tests+0x00000164e904)
#17 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2816 (ep-engine_ep_unit_tests+0x00000164ebe1)
#18 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (ep-engine_ep_unit_tests+0x000001655d2e)
#19 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x0000016562f3)
#20 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x0000016562f3)
#21 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (ep-engine_ep_unit_tests+0x0000016562f3)
#22 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (ep-engine_ep_unit_tests+0x000000f9ea58)
#23 main ../kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:175 (ep-engine_ep_unit_tests+0x000000f9ea58)
SUMMARY: ThreadSanitizer: data race /home/couchbase/jenkins/workspace/cbdeps-platform-build-old/deps/packages/build/folly/follytsan-prefix/src/follytsan/folly/io/async/EventBase.cpp:661 in folly::EventBase::runInEventBaseThreadAndWait(folly::Function<void ()>)
GCC 9:
[ RUN ] ExecutorPoolTest/1.UnregisterTaskablesCancelsTasks
[New Thread 0x7ffff0ffe700 (LWP 34608)]
[New Thread 0x7fffefffc700 (LWP 34609)]
[Thread 0x7fffefffc700 (LWP 34609) exited]
==================
WARNING: ThreadSanitizer: data race (pid=34602)
Write of size 8 at 0x7fffffffdc70 by main thread:
#0 nativeFutexWaitImpl follytsan/folly/detail/Futex.cpp:117 (ep-engine_ep_unit_tests+0x1a7d4bb)
#1 folly::detail::futexWaitImpl(std::atomic<unsigned int> const*, unsigned int, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const*, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const*, unsigned int) follytsan/folly/detail/Futex.cpp:253 (ep-engine_ep_unit_tests+0x1a7d4bb)
#2 std::enable_if<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >::clock::is_steady, folly::detail::FutexResult>::type folly::detail::futexWaitImpl<std::atomic<unsigned int> const, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >(std::atomic<unsigned int> const*, unsigned int, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, unsigned int) tlm/deps/folly.exploded/include/folly/detail/Futex-inl.h:85 (ep-engine_ep_unit_tests+0x163052a)
#3 folly::detail::FutexResult folly::detail::futexWaitUntil<std::atomic<unsigned int>, std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::atomic<unsigned int> const*, unsigned int, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, unsigned int) tlm/deps/folly.exploded/include/folly/detail/Futex-inl.h:124 (ep-engine_ep_unit_tests+0x16305e5)
#4 bool folly::detail::MemoryIdler::futexWaitPreIdle<std::atomic<unsigned int>, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(folly::detail::FutexResult&, std::atomic<unsigned int>&, unsigned int, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, unsigned int, std::chrono::duration<long, std::ratio<1l, 1000000000l> >, unsigned long, float) follytsan/folly/detail/MemoryIdler.h:194 (ep-engine_ep_unit_tests+0x1a97e33)
#5 folly::detail::FutexResult folly::detail::MemoryIdler::futexWaitUntil<std::atomic<unsigned int>, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::atomic<unsigned int>&, unsigned int, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, unsigned int, std::chrono::duration<long, std::ratio<1l, 1000000000l> > const&, unsigned long, float) follytsan/folly/detail/MemoryIdler.h:151 (ep-engine_ep_unit_tests+0x1a97e33)
#6 bool folly::SaturatingSemaphore<true, std::atomic>::tryWaitSlow<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::WaitOptions const&) follytsan/folly/synchronization/SaturatingSemaphore.h:318 (ep-engine_ep_unit_tests+0x1a97e33)
#7 bool folly::SaturatingSemaphore<true, 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::WaitOptions const&) follytsan/folly/synchronization/SaturatingSemaphore.h:179 (ep-engine_ep_unit_tests+0x1a98847)
#8 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&) follytsan/folly/synchronization/LifoSem.h:521 (ep-engine_ep_unit_tests+0x1a98847)
#9 folly::detail::LifoSemBase<folly::SaturatingSemaphore<true, std::atomic>, std::atomic>::wait() follytsan/folly/synchronization/LifoSem.h:488 (ep-engine_ep_unit_tests+0x1ab7f09)
#10 folly::ThreadPoolExecutor::StoppedThreadQueue::take() follytsan/folly/executors/ThreadPoolExecutor.cpp:362 (ep-engine_ep_unit_tests+0x1ab7f09)
#11 folly::ThreadPoolExecutor::joinStoppedThreads(unsigned long) follytsan/folly/executors/ThreadPoolExecutor.cpp:246 (ep-engine_ep_unit_tests+0x1ab80cb)
#12 folly::ThreadPoolExecutor::stop() follytsan/folly/executors/ThreadPoolExecutor.cpp:263 (ep-engine_ep_unit_tests+0x1abba79)
#13 folly::CPUThreadPoolExecutor::~CPUThreadPoolExecutor() follytsan/folly/executors/CPUThreadPoolExecutor.cpp:126 (ep-engine_ep_unit_tests+0x1a85fb2)
#14 folly::CPUThreadPoolExecutor::~CPUThreadPoolExecutor() follytsan/folly/executors/CPUThreadPoolExecutor.cpp:135 (ep-engine_ep_unit_tests+0x1a86185)
#15 std::default_delete<folly::CPUThreadPoolExecutor>::operator()(folly::CPUThreadPoolExecutor*) const /usr/include/c++/9/bits/unique_ptr.h:81 (ep-engine_ep_unit_tests+0x72d229)
#16 std::unique_ptr<folly::CPUThreadPoolExecutor, std::default_delete<folly::CPUThreadPoolExecutor> >::reset(folly::CPUThreadPoolExecutor*) /usr/include/c++/9/bits/unique_ptr.h:402 (ep-engine_ep_unit_tests+0x72d229)
#17 FollyExecutorPool::~FollyExecutorPool() ../kv_engine/engines/ep/src/folly_executorpool.cc:491 (ep-engine_ep_unit_tests+0x72d229)
#18 FollyExecutorPool::~FollyExecutorPool() ../kv_engine/engines/ep/src/folly_executorpool.cc:500 (ep-engine_ep_unit_tests+0x72d625)
#19 std::default_delete<FollyExecutorPool>::operator()(FollyExecutorPool*) const /usr/include/c++/9/bits/unique_ptr.h:81 (ep-engine_ep_unit_tests+0x15f05fe)
#20 std::unique_ptr<FollyExecutorPool, std::default_delete<FollyExecutorPool> >::~unique_ptr() /usr/include/c++/9/bits/unique_ptr.h:292 (ep-engine_ep_unit_tests+0x15f05fe)
#21 ExecutorPoolTest<FollyExecutorPool>::~ExecutorPoolTest() ../kv_engine/engines/ep/tests/module_tests/executorpool_test.h:56 (ep-engine_ep_unit_tests+0x15f05fe)
#22 ExecutorPoolTest_UnregisterTaskablesCancelsTasks_Test<FollyExecutorPool>::~ExecutorPoolTest_UnregisterTaskablesCancelsTasks_Test() ../kv_engine/engines/ep/tests/module_tests/executorpool_test.cc:137 (ep-engine_ep_unit_tests+0x15f05fe)
#23 ExecutorPoolTest_UnregisterTaskablesCancelsTasks_Test<FollyExecutorPool>::~ExecutorPoolTest_UnregisterTaskablesCancelsTasks_Test() ../kv_engine/engines/ep/tests/module_tests/executorpool_test.cc:137 (ep-engine_ep_unit_tests+0x15f05fe)
#24 testing::Test::DeleteSelf_() ../third_party/googletest/googletest/include/gtest/gtest.h:492 (ep-engine_ep_unit_tests+0x1a06f9d)
#25 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x1a12c75)
#26 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x1a12c75)
#27 testing::TestInfo::Run() ../third_party/googletest/googletest/src/gtest.cc:2690 (ep-engine_ep_unit_tests+0x1a03711)
#28 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2816 (ep-engine_ep_unit_tests+0x1a03911)
#29 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (ep-engine_ep_unit_tests+0x1a03f2e)
#30 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x1a0454d)
#31 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x1a0454d)
#32 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (ep-engine_ep_unit_tests+0x1a0454d)
#33 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (ep-engine_ep_unit_tests+0x1234f56)
#34 main ../kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:175 (ep-engine_ep_unit_tests+0x1234f56)
Previous atomic write of size 4 at 0x7fffffffdc74 by thread T5:
#0 __tsan_atomic32_compare_exchange_strong ../../../../src/libsanitizer/tsan/tsan_interface_atomic.cc:779 (libtsan.so.0+0x6ff9e)
#1 std::__atomic_base<unsigned int>::compare_exchange_strong(unsigned int&, unsigned int, std::memory_order, std::memory_order) /usr/include/c++/9/bits/atomic_base.h:502 (ep-engine_ep_unit_tests+0x1ac36a8)
#2 folly::Baton<true, std::atomic>::post() follytsan/folly/synchronization/Baton.h:142 (ep-engine_ep_unit_tests+0x1ac36a8)
#3 operator() follytsan/folly/io/async/EventBase.cpp:667 (ep-engine_ep_unit_tests+0x1ac36a8)
#4 catch_exception<folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> mutable::<lambda()>&, folly::detail::ScopeGuardImpl<FunctionType, InvokeNoexcept>::execute() [with FunctionType = folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> mutable::<lambda()>; bool InvokeNoexcept = true]::<lambda()>&> follytsan/folly/lang/Exception.h:230 (ep-engine_ep_unit_tests+0x1ac36a8)
#5 execute follytsan/folly/ScopeGuard.h:126 (ep-engine_ep_unit_tests+0x1ac36a8)
#6 ~ScopeGuardImpl follytsan/folly/ScopeGuard.h:98 (ep-engine_ep_unit_tests+0x1ac36a8)
#7 operator() follytsan/folly/io/async/EventBase.cpp:668 (ep-engine_ep_unit_tests+0x1ac36a8)
#8 callBig<folly::EventBase::runInEventBaseThreadAndWait(folly::EventBase::Func)::<lambda()> > follytsan/folly/Function.h:401 (ep-engine_ep_unit_tests+0x1ac36a8)
#9 folly::detail::function::FunctionTraits<void ()>::operator()() follytsan/folly/Function.h:416 (ep-engine_ep_unit_tests+0x1ad4903)
#10 folly::EventBase::FunctionRunner::messageAvailable(folly::Function<void ()>&&) follytsan/folly/io/async/EventBase.cpp:137 (ep-engine_ep_unit_tests+0x1ad4903)
#11 folly::NotificationQueue<folly::Function<void ()> >::Consumer::consumeMessages(bool, unsigned long*) follytsan/folly/io/async/NotificationQueue.h:729 (ep-engine_ep_unit_tests+0x1ad4903)
#12 folly::NotificationQueue<folly::Function<void ()> >::Consumer::handlerReady(unsigned short) follytsan/folly/io/async/NotificationQueue.h:663 (ep-engine_ep_unit_tests+0x1ad4c39)
#13 folly::EventHandler::libeventCallback(int, short, void*) follytsan/folly/io/async/EventHandler.cpp:158 (ep-engine_ep_unit_tests+0x1ad85a9)
#14 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)
#15 event_process_active_single_queue /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)
#16 folly::EventBase::loopBody(int, bool) follytsan/folly/io/async/EventBase.cpp:397 (ep-engine_ep_unit_tests+0x1ac8d9a)
#17 folly::EventBase::loop() follytsan/folly/io/async/EventBase.cpp:315 (ep-engine_ep_unit_tests+0x1ac921a)
#18 folly::EventBase::loopForever() follytsan/folly/io/async/EventBase.cpp:538 (ep-engine_ep_unit_tests+0x1accaf7)
#19 folly::IOThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>) follytsan/folly/executors/IOThreadPoolExecutor.cpp:195 (ep-engine_ep_unit_tests+0x1aa8780)
#20 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/include/c++/9/bits/invoke.h:73 (ep-engine_ep_unit_tests+0x1abeef9)
#21 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/include/c++/9/bits/invoke.h:95 (ep-engine_ep_unit_tests+0x1abeef9)
#22 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/include/c++/9/functional:400 (ep-engine_ep_unit_tests+0x1abeef9)
#23 void std::_Bind<void (folly::ThreadPoolExecutor::*(folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::operator()<, void>() /usr/include/c++/9/functional:484 (ep-engine_ep_unit_tests+0x1abeef9)
#24 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&) follytsan/folly/Function.h:401 (ep-engine_ep_unit_tests+0x1abeef9)
#25 folly::detail::function::FunctionTraits<void ()>::operator()() tlm/deps/folly.exploded/include/folly/Function.h:416 (ep-engine_ep_unit_tests+0x73349a)
#26 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}::operator()() tlm/deps/folly.exploded/include/folly/executors/thread_factory/NamedThreadFactory.h:40 (ep-engine_ep_unit_tests+0x73349a)
#27 void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&) /usr/include/c++/9/bits/invoke.h:60 (ep-engine_ep_unit_tests+0x73349a)
#28 std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_result&&, (folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&)...) /usr/include/c++/9/bits/invoke.h:95 (ep-engine_ep_unit_tests+0x73349a)
#29 void std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/include/c++/9/thread:244 (ep-engine_ep_unit_tests+0x73349a)
#30 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::operator()() /usr/include/c++/9/thread:251 (ep-engine_ep_unit_tests+0x73349a)
#31 std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> > >::_M_run() /usr/include/c++/9/thread:195 (ep-engine_ep_unit_tests+0x73349a)
#32 <null> <null> (libstdc++.so.6+0xd0b0f)
Location is stack of main thread.
Location is global '<null>' at 0x000000000000 ([stack]+0x00000001fc70)
Thread T5 'SchedulerPool0' (tid=34608, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors.cc:964 (libtsan.so.0+0x2d40e)
#1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xd0da4)
#2 folly::ThreadPoolExecutor::ensureActiveThreads() follytsan/folly/executors/ThreadPoolExecutor.cpp:496 (ep-engine_ep_unit_tests+0x1aba8b9)
#3 folly::IOThreadPoolExecutor::getEventBase() follytsan/folly/executors/IOThreadPoolExecutor.cpp:155 (ep-engine_ep_unit_tests+0x1aaa635)
#4 FollyExecutorPool::registerTaskable(Taskable&) ../kv_engine/engines/ep/src/folly_executorpool.cc:554 (ep-engine_ep_unit_tests+0x72c7e2)
#5 ExecutorPoolTest_UnregisterTaskablesCancelsTasks_Test<FollyExecutorPool>::TestBody() <null> (ep-engine_ep_unit_tests+0x163c2c8)
#6 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x1a12c75)
#7 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x1a12c75)
#8 testing::Test::Run() ../third_party/googletest/googletest/src/gtest.cc:2508 (ep-engine_ep_unit_tests+0x1a0354e)
#9 testing::TestInfo::Run() ../third_party/googletest/googletest/src/gtest.cc:2684 (ep-engine_ep_unit_tests+0x1a03794)
#10 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2816 (ep-engine_ep_unit_tests+0x1a03911)
#11 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (ep-engine_ep_unit_tests+0x1a03f2e)
#12 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (ep-engine_ep_unit_tests+0x1a0454d)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (ep-engine_ep_unit_tests+0x1a0454d)
#14 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (ep-engine_ep_unit_tests+0x1a0454d)
#15 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (ep-engine_ep_unit_tests+0x1234f56)
#16 main ../kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:175 (ep-engine_ep_unit_tests+0x1234f56)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment