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

ThreadSanitizer: Data race accessing std::unique_ptrs checkpoint.cc

    XMLWordPrintable

Details

    • Untriaged
    • Unknown

    Description

      As identified by TSAN in this build, there is a data race when accessing the read and write unique_ptrs.

      03:12:39 WARNING: ThreadSanitizer: data race (pid=20440)
      03:12:39   Read of size 8 at 0x7b6000040000 by thread T6 (mutexes: write M2761, write M2706):
      03:12:39     #0 std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::_M_ptr() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:147 (memcached+0x00000047737f)
      03:12:39     #1 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::get() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:337 (memcached+0x00000047737f)
      03:12:39     #2 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::operator bool() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:351 (memcached+0x00000047737f)
      03:12:39     #3 Connection::toJSON() const /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:248 (memcached+0x00000047737f)
      03:12:39     #4 connection_stats(void (*)(char const*, unsigned short, char const*, unsigned int, gsl::not_null<void const*>), void const*, long) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:255 (memcached+0x00000048b1eb)
      03:12:39     #5 stat_connections_executor /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/stats_context.cc:628 (memcached+0x0000004f8960)
      03:12:39     #6 StatsCommandContext::step() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/stats_context.cc:889 (memcached+0x0000004feb3c)
      03:12:39     #7 SteppableCommandContext::drive() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/steppable_command_context.cc:35 (memcached+0x000000500a72)
      03:12:39     #8 stat_executor /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:199 (memcached+0x0000004a6b9d)
      03:12:39     #9 std::_Function_handler<void (Cookie&), void (*)(Cookie&)>::_M_invoke(std::_Any_data const&, Cookie&) /usr/local/include/c++/7.3.0/bits/std_function.h:316 (memcached+0x0000004ad6ee)
      03:12:39     #10 std::function<void (Cookie&)>::operator()(Cookie&) const /usr/local/include/c++/7.3.0/bits/std_function.h:706 (memcached+0x0000004adccf)
      03:12:39     #11 execute_request_packet /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:744 (memcached+0x0000004ac0da)
      03:12:39     #12 mcbp_execute_packet(Cookie&) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:825 (memcached+0x0000004ac2d5)
      03:12:39     #13 conn_execute /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/statemachine_mcbp.cc:354 (memcached+0x00000050836c)
      03:12:39     #14 McbpStateMachine::execute() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/statemachine_mcbp.cc:154 (memcached+0x000000508253)
      03:12:39     #15 Connection::runStateMachinery() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1351 (memcached+0x000000480a7d)
      03:12:39     #16 Connection::runEventLoop(short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1406 (memcached+0x000000480c24)
      03:12:39     #17 run_event_loop(Connection*, short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:150 (memcached+0x00000048b4b8)
      03:12:39     #18 event_handler(int, short, void*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:946 (memcached+0x000000418e5b)
      03:12:39     #19 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #20 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #21 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #22 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Previous write of size 8 at 0x7b6000040000 by thread T5 (mutexes: write M2751):
      03:12:39     #0 std::_Tuple_impl<0ul, cb::Pipe*, std::default_delete<cb::Pipe> >::operator=(std::_Tuple_impl<0ul, cb::Pipe*, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/tuple:304 (memcached+0x00000048ac8d)
      03:12:39     #1 std::tuple<cb::Pipe*, std::default_delete<cb::Pipe> >::operator=(std::tuple<cb::Pipe*, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/tuple:1219 (memcached+0x00000048ac8d)
      03:12:39     #2 std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::operator=(std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:117 (memcached+0x00000048ac8d)
      03:12:39     #3 std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > > >, std::is_move_constructible<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > >, std::is_move_assignable<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > > >::value, void>::type std::swap<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > >(std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&, std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&) /usr/local/include/c++/7.3.0/bits/move.h:199 (memcached+0x00000048ac8d)
      03:12:39     #4 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::swap(std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >&) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:384 (memcached+0x00000048ac8d)
      03:12:39     #5 maybe_return_single_buffer /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:438 (memcached+0x00000048ac8d)
      03:12:39     #6 conn_return_buffers(Connection*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:334 (memcached+0x00000048b28a)
      03:12:39     #7 Connection::runEventLoop(short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1461 (memcached+0x000000481072)
      03:12:39     #8 run_event_loop(Connection*, short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:150 (memcached+0x00000048b4b8)
      03:12:39     #9 event_handler(int, short, void*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:946 (memcached+0x000000418e5b)
      03:12:39     #10 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #11 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #12 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #13 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Location is heap block of size 952 at 0x7b6000040000 allocated by thread T5:
      03:12:39     #0 operator new(unsigned long) <null> (libtsan.so.0+0x00000006a4d6)
      03:12:39     #1 allocate_connection /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:358 (memcached+0x00000048c00c)
      03:12:39     #2 conn_new(int, unsigned short, event_base*, LIBEVENT_THREAD*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:182 (memcached+0x00000048c3c5)
      03:12:39     #3 dispatch_new_connections /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:247 (memcached+0x00000045ad21)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:285 (memcached+0x00000045aefb)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2761 (0x7b78000014a8) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000045afa2)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000045afa2)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000045afa2)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:287 (memcached+0x00000045afa2)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2706 (0x0000019b49e0) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000048c063)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000048c063)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000048c063)
      03:12:39     #4 allocate_connection /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:359 (memcached+0x00000048c063)
      03:12:39     #5 conn_new(int, unsigned short, event_base*, LIBEVENT_THREAD*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:182 (memcached+0x00000048c3c5)
      03:12:39     #6 dispatch_new_connections /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:247 (memcached+0x00000045ad21)
      03:12:39     #7 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:285 (memcached+0x00000045aefb)
      03:12:39     #8 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #9 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #10 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #11 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2751 (0x7b7800001220) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000045afa2)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000045afa2)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000045afa2)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:287 (memcached+0x00000045afa2)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Thread T6 'mc:worker_3' (tid=20448, running) created by main thread at:
      03:12:39     #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
      03:12:39     #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+0x0000000093fe)
      03:12:39     #2 create_worker /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:90 (memcached+0x00000045b2c2)
      03:12:39     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:448 (memcached+0x00000045be11)
      03:12:39     #4 memcached_main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:2453 (memcached+0x0000004222df)
      03:12:39     #5 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/main.cc:33 (memcached+0x0000004123c5)
      03:12:39 
      03:12:39   Thread T5 'mc:worker_2' (tid=20447, running) created by main thread at:
      03:12:39     #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
      03:12:39     #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+0x0000000093fe)
      03:12:39     #2 create_worker /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:90 (memcached+0x00000045b2c2)
      03:12:39     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:448 (memcached+0x00000045be11)
      03:12:39     #4 memcached_main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:2453 (memcached+0x0000004222df)
      03:12:39     #5 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/main.cc:33 (memcached+0x0000004123c5)
      03:12:39 
      03:12:39 SUMMARY: ThreadSanitizer: data race /usr/local/include/c++/7.3.0/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::_M_ptr() const

      and

      03:12:39 WARNING: ThreadSanitizer: data race (pid=20440)
      03:12:39   Read of size 8 at 0x7b6000040008 by thread T6 (mutexes: write M2761, write M2706):
      03:12:39     #0 std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::_M_ptr() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:147 (memcached+0x000000477497)
      03:12:39     #1 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::get() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:337 (memcached+0x000000477497)
      03:12:39     #2 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::operator bool() const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:351 (memcached+0x000000477497)
      03:12:39     #3 Connection::toJSON() const /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:252 (memcached+0x000000477497)
      03:12:39     #4 connection_stats(void (*)(char const*, unsigned short, char const*, unsigned int, gsl::not_null<void const*>), void const*, long) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:255 (memcached+0x00000048b1eb)
      03:12:39     #5 stat_connections_executor /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/stats_context.cc:628 (memcached+0x0000004f8960)
      03:12:39     #6 StatsCommandContext::step() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/stats_context.cc:889 (memcached+0x0000004feb3c)
      03:12:39     #7 SteppableCommandContext::drive() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/protocol/mcbp/steppable_command_context.cc:35 (memcached+0x000000500a72)
      03:12:39     #8 stat_executor /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:199 (memcached+0x0000004a6b9d)
      03:12:39     #9 std::_Function_handler<void (Cookie&), void (*)(Cookie&)>::_M_invoke(std::_Any_data const&, Cookie&) /usr/local/include/c++/7.3.0/bits/std_function.h:316 (memcached+0x0000004ad6ee)
      03:12:39     #10 std::function<void (Cookie&)>::operator()(Cookie&) const /usr/local/include/c++/7.3.0/bits/std_function.h:706 (memcached+0x0000004adccf)
      03:12:39     #11 execute_request_packet /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:744 (memcached+0x0000004ac0da)
      03:12:39     #12 mcbp_execute_packet(Cookie&) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/mcbp_executors.cc:825 (memcached+0x0000004ac2d5)
      03:12:39     #13 conn_execute /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/statemachine_mcbp.cc:354 (memcached+0x00000050836c)
      03:12:39     #14 McbpStateMachine::execute() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/statemachine_mcbp.cc:154 (memcached+0x000000508253)
      03:12:39     #15 Connection::runStateMachinery() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1351 (memcached+0x000000480a7d)
      03:12:39     #16 Connection::runEventLoop(short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1406 (memcached+0x000000480c24)
      03:12:39     #17 run_event_loop(Connection*, short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:150 (memcached+0x00000048b4b8)
      03:12:39     #18 event_handler(int, short, void*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:946 (memcached+0x000000418e5b)
      03:12:39     #19 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #20 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #21 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #22 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Previous write of size 8 at 0x7b6000040008 by thread T5 (mutexes: write M2751):
      03:12:39     #0 std::_Tuple_impl<0ul, cb::Pipe*, std::default_delete<cb::Pipe> >::operator=(std::_Tuple_impl<0ul, cb::Pipe*, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/tuple:304 (memcached+0x00000048ac8d)
      03:12:39     #1 std::tuple<cb::Pipe*, std::default_delete<cb::Pipe> >::operator=(std::tuple<cb::Pipe*, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/tuple:1219 (memcached+0x00000048ac8d)
      03:12:39     #2 std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::operator=(std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&&) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:117 (memcached+0x00000048ac8d)
      03:12:39     #3 std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > > >, std::is_move_constructible<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > >, std::is_move_assignable<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > > >::value, void>::type std::swap<std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> > >(std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&, std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >&) /usr/local/include/c++/7.3.0/bits/move.h:199 (memcached+0x00000048ac8d)
      03:12:39     #4 std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >::swap(std::unique_ptr<cb::Pipe, std::default_delete<cb::Pipe> >&) /usr/local/include/c++/7.3.0/bits/unique_ptr.h:384 (memcached+0x00000048ac8d)
      03:12:39     #5 maybe_return_single_buffer /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:438 (memcached+0x00000048ac8d)
      03:12:39     #6 conn_return_buffers(Connection*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:335 (memcached+0x00000048b29d)
      03:12:39     #7 Connection::runEventLoop(short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connection.cc:1461 (memcached+0x000000481072)
      03:12:39     #8 run_event_loop(Connection*, short) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:150 (memcached+0x00000048b4b8)
      03:12:39     #9 event_handler(int, short, void*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:946 (memcached+0x000000418e5b)
      03:12:39     #10 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #11 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #12 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #13 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Location is heap block of size 952 at 0x7b6000040000 allocated by thread T5:
      03:12:39     #0 operator new(unsigned long) <null> (libtsan.so.0+0x00000006a4d6)
      03:12:39     #1 allocate_connection /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:358 (memcached+0x00000048c00c)
      03:12:39     #2 conn_new(int, unsigned short, event_base*, LIBEVENT_THREAD*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:182 (memcached+0x00000048c3c5)
      03:12:39     #3 dispatch_new_connections /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:247 (memcached+0x00000045ad21)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:285 (memcached+0x00000045aefb)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2761 (0x7b78000014a8) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000045afa2)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000045afa2)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000045afa2)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:287 (memcached+0x00000045afa2)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2706 (0x0000019b49e0) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000048c063)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000048c063)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000048c063)
      03:12:39     #4 allocate_connection /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:359 (memcached+0x00000048c063)
      03:12:39     #5 conn_new(int, unsigned short, event_base*, LIBEVENT_THREAD*) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/connections.cc:182 (memcached+0x00000048c3c5)
      03:12:39     #6 dispatch_new_connections /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:247 (memcached+0x00000045ad21)
      03:12:39     #7 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:285 (memcached+0x00000045aefb)
      03:12:39     #8 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #9 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #10 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #11 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Mutex M2751 (0x7b7800001220) created at:
      03:12:39     #0 pthread_mutex_lock <null> (libtsan.so.0+0x00000003876f)
      03:12:39     #1 __gthread_mutex_lock /usr/local/include/c++/7.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h:748 (memcached+0x00000045afa2)
      03:12:39     #2 std::mutex::lock() /usr/local/include/c++/7.3.0/bits/std_mutex.h:103 (memcached+0x00000045afa2)
      03:12:39     #3 std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/local/include/c++/7.3.0/bits/std_mutex.h:162 (memcached+0x00000045afa2)
      03:12:39     #4 thread_libevent_process /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:287 (memcached+0x00000045afa2)
      03:12:39     #5 event_process_active_single_queue.isra.26 <null> (libevent_core.so.2.1.8+0x00000001aa23)
      03:12:39     #6 CouchbaseThread::run() /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:59 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #7 platform_thread_wrap /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/platform/src/cb_pthreads.cc:72 (libplatform_so.so.0.1.0+0x000000009655)
      03:12:39     #8 <null> <null> (libtsan.so.0+0x000000024feb)
      03:12:39 
      03:12:39   Thread T6 'mc:worker_3' (tid=20448, running) created by main thread at:
      03:12:39     #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
      03:12:39     #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+0x0000000093fe)
      03:12:39     #2 create_worker /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:90 (memcached+0x00000045b2c2)
      03:12:39     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:448 (memcached+0x00000045be11)
      03:12:39     #4 memcached_main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:2453 (memcached+0x0000004222df)
      03:12:39     #5 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/main.cc:33 (memcached+0x0000004123c5)
      03:12:39 
      03:12:39   Thread T5 'mc:worker_2' (tid=20447, running) created by main thread at:
      03:12:39     #0 pthread_create <null> (libtsan.so.0+0x0000000282a0)
      03:12:39     #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+0x0000000093fe)
      03:12:39     #2 create_worker /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:90 (memcached+0x00000045b2c2)
      03:12:39     #3 thread_init(unsigned long, event_base*, void (*)(int, short, void*)) /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/thread.cc:448 (memcached+0x00000045be11)
      03:12:39     #4 memcached_main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/memcached.cc:2453 (memcached+0x0000004222df)
      03:12:39     #5 main /home/couchbase/jenkins/workspace/kv_engine-threadsanitizer-master-gcc7/kv_engine/daemon/main.cc:33 (memcached+0x0000004123c5)
      03:12:39 
      03:12:39 SUMMARY: ThreadSanitizer: data race /usr/local/include/c++/7.3.0/bits/unique_ptr.h:147 in std::__uniq_ptr_impl<cb::Pipe, std::default_delete<cb::Pipe> >::_M_ptr() const

      The code block in question is this:

      connection.cc

              if (read) {
                  cJSON_AddItemToObject(obj, "read", read->to_json().release());
              }
       
              if (write) {
                  cJSON_AddItemToObject(obj, "write", write->to_json().release());
              }
      

      Attachments

        Issue Links

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

          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