Details
-
Bug
-
Resolution: Fixed
-
Major
-
4.5.0
-
Untriaged
-
Unknown
Description
As reported by ThreadSanitizer, there is a race on ItemPager::phase when multiple tasks are running (e.g. when running separate tasks per vbucket).
Details:
00:06:34.509 WARNING: ThreadSanitizer: data race (pid=180366)
|
00:06:34.509 Read of size 4 at 0x7d1c0000d650 by thread T18 (mutexes: write M18437):
|
00:06:34.509 #0 PagingVisitor::visit(StoredValue*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/item_pager.cc:86 (ep.so+0x000000107734)
|
00:06:34.509 #1 HashTable::visit(HashTableVisitor&) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/stored-value.cc:475 (ep.so+0x00000011d1b8)
|
00:06:34.509 #2 VBCBAdaptor::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep.cc:3929 (ep.so+0x0000000a3c2f)
|
00:06:34.509 #3 ExecutorThread::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorthread.cc:115 (ep.so+0x0000000fb086)
|
00:06:34.509
|
00:06:34.509 Previous write of size 4 at 0x7d1c0000d650 by thread T17:
|
00:06:34.509 #0 PagingVisitor::complete() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/item_pager.cc:179 (ep.so+0x000000108004)
|
00:06:34.509 #1 VBCBAdaptor::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep.cc:3937 (ep.so+0x0000000a3d7e)
|
00:06:34.509 #2 ExecutorThread::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/executorthread.cc:115 (ep.so+0x0000000fb086)
|
00:06:34.509
|
00:06:34.509 Location is heap block of size 104 at 0x7d1c0000d5f0 allocated by main thread:
|
00:06:34.509 #0 operator new(unsigned long) <null> (engine_testapp+0x00000046446d)
|
00:06:34.509 #1 EventuallyPersistentStore::initialize() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep.cc:429 (ep.so+0x000000088a3d)
|
00:06:34.509 #2 EventuallyPersistentEngine::initialize(char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:2144 (ep.so+0x0000000bb5c0)
|
00:06:34.509 #3 EvpInitialize(engine_interface*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/ep-engine/src/ep_engine.cc:143 (ep.so+0x0000000b8e28)
|
00:06:34.509 #4 init_engine_instance <null> (libmcd_util.so.1.0.0+0x0000000057ab)
|
00:06:34.509 #5 create_bucket(bool, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:983 (engine_testapp+0x0000004cd657)
|
00:06:34.509 #6 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-watson/memcached/programs/engine_testapp/engine_testapp.cc:1133 (engine_testapp+0x0000004cc738)
|
00:06:34.509 #7 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c)
|
The consequence of this would be that a change from PAGING_UNREFERENCED to PAGING_RANDOM (during PagingVisitor::Complete()) may not be observed by other threads.
Attachments
Issue Links
- blocks
-
MB-19612 4.5.1 Minor Release
- Closed