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

ep-engine: data race on vbucket_state::high_seqno

    XMLWordPrintable

Details

    • Untriaged
    • Unknown

    Description

      This issue was reported during commit-validation for a patch destined for 3.1.6 (http://review.couchbase.org/#/c/64207/)

      WARNING: ThreadSanitizer: data race (pid=94198)
        Write of size 8 at 0x7d1000017fd8 by thread T14 (mutexes: write M15079):
          #0 CouchKVStore::saveDocs(unsigned short, unsigned long, _doc**, _docinfo**, unsigned long, KVStatsCtx&, unsigned long, unsigned long) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/couch-kvstore/couch-kvstore.cc:1804 (ep.so+0x000000325c3a)
          #1 CouchKVStore::commit2couchstore(Callback<KVStatsCtx>*, unsigned long, unsigned long) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/couch-kvstore/couch-kvstore.cc:1669 (ep.so+0x00000031f94f)
          #2 CouchKVStore::commit(Callback<KVStatsCtx>*, unsigned long, unsigned long) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/couch-kvstore/couch-kvstore.cc:1080 (ep.so+0x00000031f247)
          #3 EventuallyPersistentStore::flushVBucket(unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/ep.cc:2790 (ep.so+0x0000000edbce)
          #4 Flusher::flushVB() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/flusher.cc:281 (ep.so+0x0000001ced95)
          #5 Flusher::step(GlobalTask*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/flusher.cc:173 (ep.so+0x0000001cdce0)
          #6 FlusherTask::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/tasks.cc:45 (ep.so+0x000000251ffe)
         ...
       
        Previous read of size 8 at 0x7d1000017fd8 by thread T15:
          #0 CouchKVStore::getLastPersistedSeqno(unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/couch-kvstore/couch-kvstore.cc:1091 (ep.so+0x00000031fe25)
          #1 DCPBackfill::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/dcp-stream.cc:149 (ep.so+0x00000028e590)
       
        Location is heap block of size 64 at 0x7d1000017fc0 allocated by thread T8:
          #0 operator new(unsigned long) <null> (engine_testapp+0x00000045c6ed)
          #1 CouchKVStore::snapshotVBucket(unsigned short, vbucket_state&, Callback<KVStatsCtx>*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/couch-kvstore/couch-kvstore.cc:888 (ep.so+0x00000031b7f4)
          #2 EventuallyPersistentStore::snapshotVBuckets(Priority const&, unsigned short) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/ep.cc:970 (ep.so+0x0000000da799)
          #3 VBSnapshotTask::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-3.0.x/ep-engine/src/tasks.cc:49 (ep.so+0x0000002520be)
      

      Log: http://cv.jenkins.couchbase.com/job/ep-engine-threadsanitizer-3.0.x/227/consoleFull#-90227350661882284-c5b1-40af-8076-4f8cb2d12fb1

      Two threads are both accessing state->highSeqno without a lock (or highSeqno being atomic).

      Attachments

        Issue Links

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

          Activity

            People

              drigby Dave Rigby (Inactive)
              drigby Dave Rigby (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