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

Data race in ActiveStream::addStats

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 4.5.0
    • 4.5.0
    • couchbase-bucket
    • None
    • Untriaged
    • Unknown
    • KV: Mar 30 - April 12

    Description

      I have not looked at it at all, just occurred on a test timeout change

      http://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-watson/319/

      1
      00:11:05.579 ==================
      2
      00:11:05.579 WARNING: ThreadSanitizer: data race (pid=64147)
      3
      00:11:05.579   Read of size 4 at 0x7d480000b9d4 by thread T11 (mutexes: write M13543, read M17306):
      4
      00:11:05.579     #0 ActiveStream::addStats(void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/stream.cc:545 (ep.so+0x000000076f03)
      5
      00:11:05.579     #1 DcpProducer::addStats(void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/producer.cc:710 (ep.so+0x00000006b1d7)
      6
      00:11:05.579     #2 ConnStatBuilder::operator()(SingleThreadedRCPtr<ConnHandler>&) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:3880 (ep.so+0x0000000e58d1)
      7
      00:11:05.579     #3 EventuallyPersistentEngine::doDcpStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:4137 (ep.so+0x0000000c518a)
      8
      00:11:05.579     #4 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:4583 (ep.so+0x0000000c8cb4)
      9
      00:11:05.579     #5 EventuallyPersistentStore::snapshotStats() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep.cc:1755 (ep.so+0x000000094816)
      10
      00:11:05.579     #6 StatSnap::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/tasks.cc:100 (ep.so+0x000000139c16)
      11
      00:11:05.579     #7 ExecutorThread::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorthread.cc:115 (ep.so+0x0000000fa1a6)
      12
      00:11:05.579     #8 launch_executor_thread(void*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f9d55)
      13
      00:11:05.579     #9 platform_thread_wrap(void*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/platform/src/cb_pthreads.cc:54 (libplatform.so.0.1.0+0x00000000568b)
      14
      00:11:05.579 
      15
      00:11:05.579   Previous write of size 4 at 0x7d480000b9d4 by main thread (mutexes: write M18112):
      16
      00:11:05.579     #0 ActiveStream::transitionState(stream_state_t) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/stream.cc:1033 (ep.so+0x000000073888)
      17
      00:11:05.579     #1 ActiveStream::setVBucketStateAckRecieved() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/stream.cc:394 (ep.so+0x000000076185)
      18
      00:11:05.579     #2 DcpProducer::handleResponse(protocol_binary_response_header*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/producer.cc:608 (ep.so+0x00000006a3c3)
      19
      00:11:05.579     #3 EvpDcpResponseHandler(engine_interface*, void const*, protocol_binary_response_header*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:1744 (ep.so+0x0000000b9d5b)
      20
      00:11:05.579     #4 mock_dcp_response_handler(engine_interface*, void const*, protocol_binary_response_header*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:799 (engine_testapp+0x0000004cf4d5)
      21
      00:11:05.579     #5 sendDcpAck(engine_interface*, engine_interface_v1*, void const*, protocol_binary_command, protocol_binary_response_status, unsigned int) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_test_apis.cc:1012 (ep_testsuite_dcp.so+0x00000004eb12)
      22
      00:11:05.579     #6 test_dcp_takeover_no_items(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_testsuite_dcp.cc:2505 (ep_testsuite_dcp.so+0x000000024d7d)
      23
      00:11:05.579     #7 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1136 (engine_testapp+0x0000004cc760)
      24
      00:11:05.579     #8 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      25
      00:11:05.579 
      26
      00:11:05.579   Location is heap block of size 376 at 0x7d480000b880 allocated by main thread:
      27
      00:11:05.579     #0 operator new(unsigned long) <null> (engine_testapp+0x00000046442d)
      28
      00:11:05.579     #1 DcpProducer::streamRequest(unsigned int, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*, ENGINE_ERROR_CODE (*)(vbucket_failover_t*, unsigned long, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/producer.cc:297 (ep.so+0x000000067fd7)
      29
      00:11:05.579     #2 EvpDcpStreamReq(engine_interface*, void const*, unsigned int, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*, ENGINE_ERROR_CODE (*)(vbucket_failover_t*, unsigned long, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:1527 (ep.so+0x0000000b9277)
      30
      00:11:05.579     #3 mock_dcp_stream_req(engine_interface*, void const*, unsigned int, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*, ENGINE_ERROR_CODE (*)(vbucket_failover_t*, unsigned long, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:552 (engine_testapp+0x0000004cea57)
      31
      00:11:05.579     #4 test_dcp_takeover_no_items(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_testsuite_dcp.cc:2473 (ep_testsuite_dcp.so+0x000000024c80)
      32
      00:11:05.579     #5 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1136 (engine_testapp+0x0000004cc760)
      33
      00:11:05.579     #6 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      34
      00:11:05.579 
      35
      00:11:05.579   Mutex M13543 (0x7d840001cc30) created at:
      36
      00:11:05.579     #0 pthread_mutex_lock <null> (engine_testapp+0x000000486720)
      37
      00:11:05.579     #1 std::mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/x86_64-linux-gnu/c++/4.9/bits/gthr-default.h:748 (ep.so+0x000000046eaa)
      38
      00:11:05.579     #2 EventuallyPersistentEngine::handleDisconnect(void const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:6262 (ep.so+0x0000000d5e1a)
      39
      00:11:05.579     #3 EvpHandleDisconnect(void const*, ENGINE_EVENT_TYPE, void const*, void const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:1765 (ep.so+0x0000000bac96)
      40
      00:11:05.579     #4 destroy_mock_cookie /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/mock_server.cc:324 (engine_testapp+0x0000004f6572)
      41
      00:11:05.579     #5 mock_get_stats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:253 (engine_testapp+0x0000004ce1e5)
      42
      00:11:05.579     #6 get_str_stat(engine_interface*, engine_interface_v1*, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_test_apis.cc:1061 (ep_testsuite_dcp.so+0x00000004d654)
      43
      00:11:05.579     #7 wait_for_warmup_complete(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_test_apis.cc:1272 (ep_testsuite_dcp.so+0x00000004ffd4)
      44
      00:11:05.579     #8 test_setup(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_testsuite_common.cc:147 (ep_testsuite_dcp.so+0x0000000445d3)
      45
      00:11:05.579     #9 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1131 (engine_testapp+0x0000004cc719)
      46
      00:11:05.579     #10 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      47
      00:11:05.579 
      48
      00:11:05.579   Mutex M17306 (0x7d580000f830) created at:
      49
      00:11:05.579     #0 pthread_rwlock_init <null> (engine_testapp+0x000000469c50)
      50
      00:11:05.579     #1 cb_rw_lock_initialize /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/platform/src/cb_pthreads.cc:373 (libplatform.so.0.1.0+0x000000006794)
      51
      00:11:05.579     #2 DcpProducer::DcpProducer(EventuallyPersistentEngine&, void const*, std::string const&, bool) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/rwlock.h:31 (ep.so+0x000000065aba)
      52
      00:11:05.579     #3 DcpConnMap::newProducer(void const*, std::string const&, bool) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/connmap.cc:1003 (ep.so+0x0000000461f4)
      53
      00:11:05.579     #4 EventuallyPersistentEngine::dcpOpen(void const*, unsigned int, unsigned int, unsigned int, void*, unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:6223 (ep.so+0x0000000d59cd)
      54
      00:11:05.579     #5 EvpDcpOpen(engine_interface*, void const*, unsigned int, unsigned int, unsigned int, void*, unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:1476 (ep.so+0x0000000b8ecf)
      55
      00:11:05.579     #6 mock_dcp_open(engine_interface*, void const*, unsigned int, unsigned int, unsigned int, void*, unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:491 (engine_testapp+0x0000004ce7e5)
      56
      00:11:05.579     #7 test_dcp_takeover_no_items(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_testsuite_dcp.cc:2459 (ep_testsuite_dcp.so+0x000000024bdb)
      57
      00:11:05.579     #8 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1136 (engine_testapp+0x0000004cc760)
      58
      00:11:05.579     #9 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      59
      00:11:05.579 
      60
      00:11:05.579   Mutex M18112 (0x7d480000b8e0) created at:
      61
      00:11:05.579     #0 pthread_mutex_lock <null> (engine_testapp+0x000000486720)
      62
      00:11:05.579     #1 std::mutex::lock() /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/x86_64-linux-gnu/c++/4.9/bits/gthr-default.h:748 (ep.so+0x000000068154)
      63
      00:11:05.579     #2 EvpDcpStreamReq(engine_interface*, void const*, unsigned int, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*, ENGINE_ERROR_CODE (*)(vbucket_failover_t*, unsigned long, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:1527 (ep.so+0x0000000b9277)
      64
      00:11:05.579     #3 mock_dcp_stream_req(engine_interface*, void const*, unsigned int, unsigned int, unsigned short, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long*, ENGINE_ERROR_CODE (*)(vbucket_failover_t*, unsigned long, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:552 (engine_testapp+0x0000004cea57)
      65
      00:11:05.579     #4 test_dcp_takeover_no_items(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/tests/ep_testsuite_dcp.cc:2473 (ep_testsuite_dcp.so+0x000000024c80)
      66
      00:11:05.579     #5 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1136 (engine_testapp+0x0000004cc760)
      67
      00:11:05.579     #6 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      68
      00:11:05.579 
      69
      00:11:05.579   Thread T11 'mc:writer_10' (tid=64160, running) created by main thread at:
      70
      00:11:05.579     #0 pthread_create <null> (engine_testapp+0x0000004678d1)
      71
      00:11:05.579     #1 cb_create_named_thread /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/platform/src/cb_pthreads.cc:104 (libplatform.so.0.1.0+0x0000000054e5)
      72
      00:11:05.579     #2 ExecutorThread::start() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorthread.cc:46 (ep.so+0x0000000f96f7)
      73
      00:11:05.579     #3 ExecutorPool::_startWorkers() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorpool.cc:515 (ep.so+0x0000000f305a)
      74
      00:11:05.579     #4 ExecutorPool::_registerTaskable(Taskable&) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorpool.cc:479 (ep.so+0x0000000f26c9)
      75
      00:11:05.579     #5 ExecutorPool::registerTaskable(Taskable&) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorpool.cc:484 (ep.so+0x0000000f48fe)
      76
      00:11:05.579     #6 EventuallyPersistentStore::EventuallyPersistentStore(EventuallyPersistentEngine&) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep.cc:301 (ep.so+0x00000008546a)
      77
      00:11:05.579     #7 EventuallyPersistentEngine::initialize(char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:2132 (ep.so+0x0000000ba69e)
      78
      00:11:05.579     #8 EvpInitialize(engine_interface*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:143 (ep.so+0x0000000b7fd8)
      79
      00:11:05.579     #9 init_engine_instance <null> (libmcd_util.so.1.0.0+0x0000000057ab)
      80
      00:11:05.579     #10 create_bucket(bool, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:983 (engine_testapp+0x0000004cd5e7)
      81
      00:11:05.579     #11 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1129 (engine_testapp+0x0000004cc6c8)
      82
      00:11:05.579     #12 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
      83
      00:11:05.579 
      84
      00:11:05.579 SUMMARY: ThreadSanitizer: data race /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/dcp/stream.cc:545 ActiveStream::addStats(void (*)(char const*, unsigned short, char const*, unsigned int, void const*), void const*)
      85
      00:11:05.579 ==================
      

      Attachments

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

        Activity

          People

            drigby Dave Rigby (Inactive)
            will.gardner Will Gardner (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty