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

TSan reports a data race when updating BasicLinkedList stats

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • backlog
    • master
    • couchbase-bucket
    • None
    • Untriaged
    • 0
    • Unknown

    Description

      https://cv.jenkins.couchbase.com/job/kv_engine.threadsanitizer/job/master/25453/consoleFull

      The NonNegativeCounters should be atomic or read/written to under a lock.

      18:17:15  WARNING: ThreadSanitizer: data race (pid=125276)
      18:17:15    Write of size 8 at 0x7b44000045c0 by thread T8:
      18:17:15      #0 cb::NonNegativeCounter<unsigned long, cb::DefaultUnderflowPolicy>::fetch_sub(long) ../platform/include/platform/non_negative_counter.h:142 (ep_testsuite+0x5b9728)
      18:17:15      #1 cb::NonNegativeCounter<unsigned long, cb::DefaultUnderflowPolicy>::operator--() ../platform/include/platform/non_negative_counter.h:175 (ep_testsuite+0x955d7d)
      18:17:15      #2 BasicLinkedList::purgeListElem(boost::intrusive::list_iterator<boost::intrusive::mhtraits<OrderedStoredValue, boost::intrusive::list_member_hook<>, &OrderedStoredValue::seqno_hook>, false>, bool, bool) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/linked_list.cc:412 (ep_testsuite+0xa82691)
      18:17:15      #3 BasicLinkedList::purgeTombstones(long, std::function<bool (DocKey const&, long)>, std::function<bool ()>) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/linked_list.cc:280 (ep_testsuite+0xa82112)
      18:17:15      #4 EphemeralVBucket::purgeStaleItems(std::function<bool ()>) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ephemeral_vb.cc:370 (ep_testsuite+0x7f1e70)
      18:17:15      #5 EphemeralVBucket::StaleItemDeleter::visit(VBucket&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ephemeral_tombstone_purger.cc:202 (ep_testsuite+0x88516e)
      18:17:15      #6 KVBucket::pauseResumeVisit(PauseResumeVBVisitor&, KVBucketIface::Position&, VBucketFilter*) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/kv_bucket.cc:2378 (ep_testsuite+0x72602e)
      18:17:15      #7 EphTombstoneStaleItemDeleter::run() /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ephemeral_tombstone_purger.cc:271 (ep_testsuite+0x830832)
      18:17:15      #8 GlobalTask::execute(std::basic_string_view<char, std::char_traits<char> >) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/executor/globaltask.cc:99 (ep_testsuite+0x54b1d9)
      18:17:15      #9 FollyExecutorPool::TaskProxy::scheduleViaCPUPool()::{lambda()#2}::operator()() const /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/executor/folly_executorpool.cc:163 
      

      18:17:15    Previous read of size 8 at 0x7b44000045c0 by main thread (mutexes: write M3039, write M226441430443240104):
      18:17:15      #0 cb::NonNegativeCounter<unsigned long, cb::DefaultUnderflowPolicy>::load() const ../platform/include/platform/non_negative_counter.h:89 (ep_testsuite+0x5b9215)
      18:17:15      #1 cb::NonNegativeCounter<unsigned long, cb::DefaultUnderflowPolicy>::operator unsigned long() const ../platform/include/platform/non_negative_counter.h:85 (ep_testsuite+0x671b45)
      18:17:15      #2 BasicLinkedList::getNumStaleItems() const /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/linked_list.cc:307 (ep_testsuite+0xa8284c)
      18:17:15      #3 EphemeralVBucket::CountVisitor::visitBucket(VBucket&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ephemeral_vb_count_visitor.cc:35 (ep_testsuite+0x7f4a96)
      18:17:15      #4 VBucketStatAggregator::visitBucket(VBucket&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/vb_count_visitor.cc:115 (ep_testsuite+0x6c085b)
      18:17:15      #5 KVBucket::visit(VBucketVisitor&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/kv_bucket.cc:2350 (ep_testsuite+0x725dd3)
      18:17:15      #6 KVBucket::getAggregatedVBucketStats(BucketStatCollector const&, cb::prometheus::MetricGroup) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/kv_bucket.cc:1261 (ep_testsuite+0x71f7ea)
      18:17:15      #7 EventuallyPersistentEngine::doEngineStatsLowCardinality(BucketStatCollector const&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ep_engine.cc:3021 (ep_testsuite+0x810b15)
      18:17:15      #8 EventuallyPersistentEngine::doEngineStats(BucketStatCollector const&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ep_engine.cc:2978 (ep_testsuite+0x822ace)
      18:17:15      #9 EventuallyPersistentEngine::getStats(CookieIface&, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, CookieIface&)> const&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ep_engine.cc:4783 (ep_testsuite+0x80dee4)
      18:17:15      #10 EventuallyPersistentEngine::get_stats(CookieIface&, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, CookieIface&)> const&) /home/couchbase/jenkins/workspace/kv_engine.threadsanitizer_master/kv_engine/engines/ep/src/ep_engine.cc:370 (ep_testsuite+0x80dcea)
      

      Attachments

        Issue Links

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

          Activity

            People

              vesko.karaganev Vesko Karaganev
              vesko.karaganev Vesko Karaganev
              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