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

Data race in prometheus_init

    XMLWordPrintable

Details

    • Triaged
    • 1
    • Yes
    • KV-Engine 2021-Jan

    Description

      As seen in local cluster_run testing with ThreadSanitizer enabled on Ubuntu18.04 + clang 9:

      ==================
      WARNING: ThreadSanitizer: data race (pid=56295)
        Write of size 8 at 0x7b54000005f8 by main thread:
          #0 pthread_cond_destroy <null> (libtsan.so.0+0x00000002bdde)
          #1 ~ExternalAuthManagerThread /home/couchbase/server/kv_engine/daemon/external_auth_manager_thread.h:43 (memcached+0x000000528e17)
          #2 ~ExternalAuthManagerThread /home/couchbase/server/kv_engine/daemon/external_auth_manager_thread.h:43 (memcached+0x000000528ef5)
          #3 std::default_delete<ExternalAuthManagerThread>::operator()(ExternalAuthManagerThread*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/unique_ptr.h:78 (memcached+0x0000005288a1)
          #4 ~unique_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/unique_ptr.h:263 (memcached+0x0000005288a1)
          #5 <null> <null> (libtsan.so.0+0x000000027ed3)
          #6 prometheus_init() /home/couchbase/server/kv_engine/daemon/memcached.cc:266 (memcached+0x00000046cbfd)
          #7 memcached_main(int, char**) /home/couchbase/server/kv_engine/daemon/memcached.cc:1470 (memcached+0x00000046cbfd)
          #8 main /home/couchbase/server/kv_engine/daemon/main.cc:36 (memcached+0x0000004659a0)
       
        Previous read of size 8 at 0x7b54000005f8 by thread T4 (mutexes: write M802057809356129744):
          #0 pthread_cond_timedwait <null> (libtsan.so.0+0x000000049a5b)
          #1 __gthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, timespec const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/x86_64-linux-gnu/c++/7.5.0/bits/gthr-default.h:871 (memcached+0x000000525792)
          #2 std::cv_status std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/condition_variable:178 (memcached+0x000000525792)
          #3 std::cv_status std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/condition_variable:106 (memcached+0x000000525792)
          #4 std::cv_status std::condition_variable::wait_for<long, std::ratio<1l, 1000000000l> >(std::unique_lock<std::mutex>&, std::chrono::duration<long, std::ratio<1l, 1000000000l> > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/condition_variable:143 (memcached+0x000000525792)
          #5 ExternalAuthManagerThread::run() /home/couchbase/server/kv_engine/daemon/external_auth_manager_thread.cc:229 (memcached+0x000000525792)
          #6 Couchbase::Thread::thread_entry() /home/couchbase/server/platform/src/thread.cc:45 (libplatform_so.so.0.1.0+0x00000001fd92)
          #7 Couchbase::StartThreadDelegator::run(Couchbase::Thread&) /home/couchbase/server/platform/src/thread.cc:59 (libplatform_so.so.0.1.0+0x000000020055)
          #8 task_thread_main(void*) /home/couchbase/server/platform/src/thread.cc:65 (libplatform_so.so.0.1.0+0x000000020055)
          #9 CouchbaseThread::run() /home/couchbase/server/platform/src/cb_pthreads.cc:58 (libplatform_so.so.0.1.0+0x00000000e646)
          #10 platform_thread_wrap(void*) /home/couchbase/server/platform/src/cb_pthreads.cc:71 (libplatform_so.so.0.1.0+0x00000000e646)
          #11 <null> <null> (libtsan.so.0+0x00000002843b)
       
        Location is heap block of size 624 at 0x7b5400000500 allocated by main thread:
          #0 operator new(unsigned long) <null> (libtsan.so.0+0x00000006d926)
          #1 std::_MakeUniq<ExternalAuthManagerThread>::__single_object std::make_unique<ExternalAuthManagerThread>() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/unique_ptr.h:821 (memcached+0x00000046c87b)
          #2 memcached_main(int, char**) /home/couchbase/server/kv_engine/daemon/memcached.cc:1436 (memcached+0x00000046c87b)
          #3 main /home/couchbase/server/kv_engine/daemon/main.cc:36 (memcached+0x0000004659a0)
       
        Mutex M802057809356129744 is already destroyed.
       
        Thread T4 'mcd:ext_auth' (tid=56327, running) created by main thread at:
          #0 pthread_create <null> (libtsan.so.0+0x00000002b6f0)
          #1 cb_create_named_thread(unsigned long*, void (*)(void*), void*, int, char const*) /home/couchbase/server/platform/src/cb_pthreads.cc:109 (libplatform_so.so.0.1.0+0x00000000e526)
          #2 Couchbase::Thread::start() /home/couchbase/server/platform/src/thread.cc:72 (libplatform_so.so.0.1.0+0x00000001ff0f)
          #3 memcached_main(int, char**) /home/couchbase/server/kv_engine/daemon/memcached.cc:1439 (memcached+0x00000046c92c)
          #4 main /home/couchbase/server/kv_engine/daemon/main.cc:36 (memcached+0x0000004659a0)
       
      SUMMARY: ThreadSanitizer: data race (/home/couchbase/server/install/bin/../lib/libtsan.so.0+0x2bdde) in pthread_cond_destroy
      

      kv_engine SHA: c85254b2e67328853b624dc30b48c9ff1de189a9

      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:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty