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

ThreadSanitizer: Data race in checkpoint.cc

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Fix
    • Critical
    • 5.5.0
    • None
    • couchbase-bucket
    • None
    • Untriaged
    • Unknown

    Description

      TSAN picked up the following data race from this build:

      WARNING: ThreadSanitizer: data race (pid=20727)
        Write of size 8 at 0x7b440005ff18 by thread T10 (mutexes: write M3761):
          #0 Checkpoint::setSnapshotEndSeqno(unsigned long) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.h:475 (ep-engine_ep_unit_tests+0x00000089bc36)
          #1 CheckpointManager::queueDirty(VBucket&, SingleThreadedRCPtr<Item, Item*, std::default_delete<Item> >&, GenerateBySeqno, GenerateCas, PreLinkDocumentContext*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:1238 (ep-engine_ep_unit_tests+0x00000089bc36)
          #2 launch_set_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:214 (ep-engine_ep_unit_tests+0x000000499b5b)
          #3 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x00000000974f)
          #4 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x00000000974f)
          #5 <null> <null> (libtsan.so.0+0x000000024feb)
       
        Previous read of size 8 at 0x7b440005ff18 by thread T6:
          #0 std::__uniq_ptr_impl<Checkpoint, std::default_delete<Checkpoint> >::_M_ptr() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:147 (ep-engine_ep_unit_tests+0x0000008a1e39)
          #1 std::unique_ptr<Checkpoint, std::default_delete<Checkpoint> >::get() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:337 (ep-engine_ep_unit_tests+0x0000008a1e39)
          #2 std::unique_ptr<Checkpoint, std::default_delete<Checkpoint> >::operator->() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:331 (ep-engine_ep_unit_tests+0x0000008a1e39)
          #3 DebugCPM::check(char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:52 (ep-engine_ep_unit_tests+0x0000008a1e39)
          #4 DebugCPM::~DebugCPM() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:47 (ep-engine_ep_unit_tests+0x0000008a192a)
          #5 CheckpointManager::removeClosedUnrefCheckpoints(VBucket&, bool&) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:952 (ep-engine_ep_unit_tests+0x0000008a192a)
          #6 launch_checkpoint_cleanup_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:195 (ep-engine_ep_unit_tests+0x000000498391)
          #7 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x00000000974f)
          #8 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x00000000974f)
          #9 <null> <null> (libtsan.so.0+0x000000024feb)
       
        Location is heap block of size 264 at 0x7b440005ff00 allocated by main thread:
          #0 operator new(unsigned long) <null> (libtsan.so.0+0x00000006a4d6)
          #1 __unique_if<Checkpoint>::__unique_single std::make_unique<Checkpoint, EPStats&, unsigned long&, unsigned long&, unsigned long&, unsigned short const&>(EPStats&, unsigned long&, unsigned long&, unsigned long&, unsigned short const&) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/include/platform/make_unique.h:45 (ep-engine_ep_unit_tests+0x00000089ac6e)
          #2 CheckpointManager::addNewCheckpoint_UNLOCKED(unsigned long, unsigned long, unsigned long) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:562 (ep-engine_ep_unit_tests+0x00000089ac6e)
          #3 CheckpointManager::CheckpointManager(EPStats&, unsigned short, CheckpointConfig&, long, unsigned long, unsigned long, std::shared_ptr<Callback<unsigned short> >) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:471 (ep-engine_ep_unit_tests+0x00000089f711)
          #4 CheckpointTest_basic_chk_test_Test<EPVBucket>::TestBody() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:241 (ep-engine_ep_unit_tests+0x0000004ab44c)
          #5 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b1e048)
          #6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b1e048)
          #7 testing::Test::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2474 (ep-engine_ep_unit_tests+0x000000b10f3b)
          #8 testing::TestInfo::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2656 (ep-engine_ep_unit_tests+0x000000b115b7)
          #9 testing::TestCase::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2774 (ep-engine_ep_unit_tests+0x000000b119f1)
          #10 testing::internal::UnitTestImpl::RunAllTests() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4649 (ep-engine_ep_unit_tests+0x000000b12708)
          #11 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b13005)
          #12 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b13005)
          #13 testing::UnitTest::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4257 (ep-engine_ep_unit_tests+0x000000b13005)
          #14 RUN_ALL_TESTS() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/include/gtest/gtest.h:2237 (ep-engine_ep_unit_tests+0x000000434a3c)
          #15 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:71 (ep-engine_ep_unit_tests+0x000000434a3c)
       
        Mutex M3761 (0x7b3000000b50) created at:
          #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
          #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (ep-engine_ep_unit_tests+0x00000089f76a)
          #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (ep-engine_ep_unit_tests+0x00000089f76a)
          #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (ep-engine_ep_unit_tests+0x00000089f76a)
          #4 CheckpointManager::CheckpointManager(EPStats&, unsigned short, CheckpointConfig&, long, unsigned long, unsigned long, std::shared_ptr<Callback<unsigned short> >) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.cc:470 (ep-engine_ep_unit_tests+0x00000089f76a)
          #5 CheckpointTest_basic_chk_test_Test<EPVBucket>::TestBody() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:241 (ep-engine_ep_unit_tests+0x0000004ab44c)
          #6 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b1e048)
          #7 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b1e048)
          #8 testing::Test::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2474 (ep-engine_ep_unit_tests+0x000000b10f3b)
          #9 testing::TestInfo::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2656 (ep-engine_ep_unit_tests+0x000000b115b7)
          #10 testing::TestCase::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2774 (ep-engine_ep_unit_tests+0x000000b119f1)
          #11 testing::internal::UnitTestImpl::RunAllTests() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4649 (ep-engine_ep_unit_tests+0x000000b12708)
          #12 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b13005)
          #13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b13005)
          #14 testing::UnitTest::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4257 (ep-engine_ep_unit_tests+0x000000b13005)
          #15 RUN_ALL_TESTS() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/include/gtest/gtest.h:2237 (ep-engine_ep_unit_tests+0x000000434a3c)
          #16 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:71 (ep-engine_ep_unit_tests+0x000000434a3c)
       
        Thread T10 (tid=20751, running) created by main thread at:
          #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
          #1 cb_create_named_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:110 (libplatform_so.so.0.1.0+0x000000009447)
          #2 cb_create_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:82 (libplatform_so.so.0.1.0+0x0000000095a3)
          #3 CheckpointTest_basic_chk_test_Test<EPVBucket>::TestBody() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:283 (ep-engine_ep_unit_tests+0x0000004ac063)
          #4 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b1e048)
          #5 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b1e048)
          #6 testing::Test::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2474 (ep-engine_ep_unit_tests+0x000000b10f3b)
          #7 testing::TestInfo::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2656 (ep-engine_ep_unit_tests+0x000000b115b7)
          #8 testing::TestCase::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2774 (ep-engine_ep_unit_tests+0x000000b119f1)
          #9 testing::internal::UnitTestImpl::RunAllTests() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4649 (ep-engine_ep_unit_tests+0x000000b12708)
          #10 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b13005)
          #11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b13005)
          #12 testing::UnitTest::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4257 (ep-engine_ep_unit_tests+0x000000b13005)
          #13 RUN_ALL_TESTS() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/include/gtest/gtest.h:2237 (ep-engine_ep_unit_tests+0x000000434a3c)
          #14 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:71 (ep-engine_ep_unit_tests+0x000000434a3c)
       
        Thread T6 (tid=20746, running) created by main thread at:
          #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
          #1 cb_create_named_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:110 (libplatform_so.so.0.1.0+0x000000009447)
          #2 cb_create_thread /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:82 (libplatform_so.so.0.1.0+0x0000000095a3)
          #3 CheckpointTest_basic_chk_test_Test<EPVBucket>::TestBody() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/checkpoint_test.cc:272 (ep-engine_ep_unit_tests+0x0000004abe78)
          #4 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b1e048)
          #5 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b1e048)
          #6 testing::Test::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2474 (ep-engine_ep_unit_tests+0x000000b10f3b)
          #7 testing::TestInfo::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2656 (ep-engine_ep_unit_tests+0x000000b115b7)
          #8 testing::TestCase::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2774 (ep-engine_ep_unit_tests+0x000000b119f1)
          #9 testing::internal::UnitTestImpl::RunAllTests() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4649 (ep-engine_ep_unit_tests+0x000000b12708)
          #10 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2402 (ep-engine_ep_unit_tests+0x000000b13005)
          #11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:2438 (ep-engine_ep_unit_tests+0x000000b13005)
          #12 testing::UnitTest::Run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/src/gtest.cc:4257 (ep-engine_ep_unit_tests+0x000000b13005)
          #13 RUN_ALL_TESTS() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/googletest/googletest/include/gtest/gtest.h:2237 (ep-engine_ep_unit_tests+0x000000434a3c)
          #14 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:71 (ep-engine_ep_unit_tests+0x000000434a3c)
       
      SUMMARY: ThreadSanitizer: data race /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/engines/ep/src/checkpoint.h:475 in Checkpoint::setSnapshotEndSeqno(unsigned long)

      Attachments

        For Gerrit Dashboard: MB-28679
        # Subject Branch Project Status CR V

        Activity

          People

            tim.bradgate Tim Bradgate (Inactive)
            tim.bradgate Tim Bradgate (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