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

ThreadSanitizer: data race on vptr (ProcessMonitor)

    XMLWordPrintable

Details

    Description

      As seen during CV testing for http://review.couchbase.org/c/kv_engine/+/155827:

      [       OK ] HelloTest.Collections (3 ms)
       ==================
       WARNING: ThreadSanitizer: data race on vptr (ctor/dtor vs virtual call) (pid=110348)
         Write of size 8 at 0x7b4000001b00 by main thread:
           #0 ProcessMonitorImpl::~ProcessMonitorImpl() ../platform/src/process_monitor.cc:93 (memcached_testapp+0x90b3c6)
           #1 ChildProcessMonitor::~ChildProcessMonitor() ../platform/src/process_monitor.cc:268 (memcached_testapp+0x907965)
           #2 std::default_delete<ProcessMonitor>::operator()(ProcessMonitor*) const /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/unique_ptr.h:85 (memcached_testapp+0x6fd493)
           #3 std::__uniq_ptr_impl<ProcessMonitor, std::default_delete<ProcessMonitor> >::reset(ProcessMonitor*) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/unique_ptr.h:182 (memcached_testapp+0x6fd38b)
           #4 std::unique_ptr<ProcessMonitor, std::default_delete<ProcessMonitor> >::reset(ProcessMonitor*) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/unique_ptr.h:456 (memcached_testapp+0x6f41a8)
           #5 TestappTest::stop_memcached_server() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:777 (memcached_testapp+0x6d23e2)
           #6 TestappTest::TearDownTestCase() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:161 (memcached_testapp+0x6d230c)
           #7 testing::TestSuite::RunTearDownTestSuite() ../third_party/googletest/googletest/include/gtest/gtest.h:955 (memcached_testapp+0x932361)
           #8 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (memcached_testapp+0x948783)
           #9 void testing::internal::HandleExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (memcached_testapp+0x9321c2)
           #10 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2821 (memcached_testapp+0x91aa8c)
           #11 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (memcached_testapp+0x923bc1)
           #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 (memcached_testapp+0x94a2c3)
           #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 (memcached_testapp+0x9338a2)
           #14 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (memcached_testapp+0x923777)
           #15 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (memcached_testapp+0x6f4d27)
           #16 main /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:1283 (memcached_testapp+0x6d7d3c)
       
         Previous read of size 8 at 0x7b4000001b00 by thread T1 (mutexes: write M143687752930565024):
           #0 ProcessMonitorImpl::start()::{lambda()#1}::operator()() const ../platform/src/process_monitor.cc:201 (memcached_testapp+0x906cfc)
           #1 void std::__invoke_impl<void, ProcessMonitorImpl::start()::{lambda()#1}>(std::__invoke_other, ProcessMonitorImpl::start()::{lambda()#1}&&) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/invoke.h:60 (memcached_testapp+0x906bcd)
           #2 std::__invoke_result<ProcessMonitorImpl::start()::{lambda()#1}>::type std::__invoke<ProcessMonitorImpl::start()::{lambda()#1}>(std::__invoke_result&&, (ProcessMonitorImpl::start()::{lambda()#1}&&)...) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/invoke.h:95 (memcached_testapp+0x906b3d)
           #3 void std::thread::_Invoker<std::tuple<ProcessMonitorImpl::start()::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/thread:264 (memcached_testapp+0x906b05)
           #4 std::thread::_Invoker<std::tuple<ProcessMonitorImpl::start()::{lambda()#1}> >::operator()() /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/thread:271 (memcached_testapp+0x906ac5)
           #5 std::thread::_State_impl<std::thread::_Invoker<std::tuple<ProcessMonitorImpl::start()::{lambda()#1}> > >::_M_run() /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/thread:215 (memcached_testapp+0x9069f9)
           #6 execute_native_thread_routine /tmp/deploy/objdir/../gcc-10.2.0/libstdc++-v3/src/c++11/thread.cc:80 (libstdc++.so.6+0xd62ef)
       
         Location is heap block of size 248 at 0x7b4000001b00 allocated by main thread:
           #0 operator new(unsigned long) <null> (libtsan.so.0+0x87c5c)
           #1 std::_MakeUniq<ChildProcessMonitor>::__single_object std::make_unique<ChildProcessMonitor, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ProcessMonitor::ExitCode const&)>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ProcessMonitor::ExitCode const&)>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) /opt/gcc-10.2.0/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/unique_ptr.h:962 (memcached_testapp+0x9063dd)
           #2 ProcessMonitor::create(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ProcessMonitor::ExitCode const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../platform/src/process_monitor.cc:456 (memcached_testapp+0x9061d6)
           #3 TestappTest::start_external_server() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:512 (memcached_testapp+0x6d4790)
           #4 TestappTest::start_memcached_server() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:671 (memcached_testapp+0x6d2245)
           #5 TestappTest::SetUpTestCase() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:137 (memcached_testapp+0x6cf349)
           #6 testing::TestSuite::RunSetUpTestSuite() ../third_party/googletest/googletest/include/gtest/gtest.h:947 (memcached_testapp+0x932321)
           #7 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (memcached_testapp+0x948783)
           #8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (memcached_testapp+0x9321c2)
           #9 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2811 (memcached_testapp+0x91a9e3)
           #10 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (memcached_testapp+0x923bc1)
           #11 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 (memcached_testapp+0x94a2c3)
           #12 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 (memcached_testapp+0x9338a2)
           #13 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (memcached_testapp+0x923777)
           #14 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (memcached_testapp+0x6f4d27)
           #15 main /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:1283 (memcached_testapp+0x6d7d3c)
       
         Mutex M143687752930565024 is already destroyed.
       
         Thread T1 'procmon' (tid=110358, running) created by main thread at:
           #0 pthread_create <null> (libtsan.so.0+0x5be62)
           #1 __gthread_create /tmp/deploy/objdir/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663 (libstdc++.so.6+0xd6564)
           #2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /tmp/deploy/objdir/../gcc-10.2.0/libstdc++-v3/src/c++11/thread.cc:135 (libstdc++.so.6+0xd6564)
           #3 ProcessMonitorImpl::start() ../platform/src/process_monitor.cc:180 (memcached_testapp+0x9064f7)
           #4 ProcessMonitor::create(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ProcessMonitor::ExitCode const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../platform/src/process_monitor.cc:458 (memcached_testapp+0x9061e6)
           #5 TestappTest::start_external_server() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:512 (memcached_testapp+0x6d4790)
           #6 TestappTest::start_memcached_server() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:671 (memcached_testapp+0x6d2245)
           #7 TestappTest::SetUpTestCase() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:137 (memcached_testapp+0x6cf349)
           #8 testing::TestSuite::RunSetUpTestSuite() ../third_party/googletest/googletest/include/gtest/gtest.h:947 (memcached_testapp+0x932321)
           #9 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2433 (memcached_testapp+0x948783)
           #10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::TestSuite, void>(testing::TestSuite*, void (testing::TestSuite::*)(), char const*) ../third_party/googletest/googletest/src/gtest.cc:2469 (memcached_testapp+0x9321c2)
           #11 testing::TestSuite::Run() ../third_party/googletest/googletest/src/gtest.cc:2811 (memcached_testapp+0x91a9e3)
           #12 testing::internal::UnitTestImpl::RunAllTests() ../third_party/googletest/googletest/src/gtest.cc:5338 (memcached_testapp+0x923bc1)
           #13 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 (memcached_testapp+0x94a2c3)
           #14 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 (memcached_testapp+0x9338a2)
           #15 testing::UnitTest::Run() ../third_party/googletest/googletest/src/gtest.cc:4925 (memcached_testapp+0x923777)
           #16 RUN_ALL_TESTS() ../third_party/googletest/googletest/include/gtest/gtest.h:2473 (memcached_testapp+0x6f4d27)
           #17 main /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/tests/testapp/testapp.cc:1283 (memcached_testapp+0x6d7d3c)
       
       SUMMARY: ThreadSanitizer: data race on vptr (ctor/dtor vs virtual call) ../platform/src/process_monitor.cc:93 in ProcessMonitorImpl::~ProcessMonitorImpl()
       ==================
      

      Attachments

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

        Activity

          People

            trond Trond Norbye
            drigby Dave Rigby (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty