Skip to content

Commit 3034a75

Browse files
abhinavdangetichiyoung
authored andcommitted
Fix data race in executor thread
WARNING: ThreadSanitizer: data race (pid=236996) Write of size 8 at 0x7d380000dbd8 by thread T5: #0 ExecutorThread::run() /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/ep-engine/src/executorthread.cc:105 (ep.so+0x0000000ee0cc) couchbase#1 launch_executor_thread(void*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000edd75) couchbase#2 platform_thread_wrap(void*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/platform/src/cb_pthreads.cc:54 (libplatform.so.0.1.0+0x000000004e7b) Previous read of size 8 at 0x7d380000dbd8 by main thread (mutexes: write M266835151185571736): #0 addWorkerStats(char const*, ExecutorThread*, void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/ep-engine/src/executorthread.h:108 (ep.so+0x0000000ea8dc) couchbase#1 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-master/ep-engine/src/ep_engine.cc:4363 (ep.so+0x0000000c05dd) couchbase#2 EvpGetStats(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-master/ep-engine/src/ep_engine.cc:219 (ep.so+0x0000000af40e) couchbase#3 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-master/memcached/programs/engine_testapp/engine_testapp.cc:240 (engine_testapp+0x0000004cc71d) couchbase#4 test_worker_stats(engine_interface*, engine_interface_v1*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/ep-engine/tests/ep_testsuite.cc:9464 (ep_testsuite.so+0x00000003c038) couchbase#5 execute_test(test, char const*, char const*) /home/couchbase/jenkins/workspace/ep-engine-threadsanitizer-master/memcached/programs/engine_testapp/engine_testapp.cc:1091 (engine_testapp+0x0000004cb315) #6 __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 (libc.so.6+0x00000002176c) Change-Id: If01aba3cf6b3591f19c5bb62119e40998f12c8ff Reviewed-on: http://review.couchbase.org/57593 Reviewed-by: Manu Dhundi <manu@couchbase.com> Tested-by: buildbot <build@couchbase.com> Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
1 parent bef6f79 commit 3034a75

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

src/executorthread.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class ExecutorThread {
9999
const std::string getTaskableName() {
100100
LockHolder lh(currentTaskMutex);
101101
if (currentTask) {
102-
return currentTask->getTaskable().getName();
102+
return currentTask->getTaskable().getName();
103103
} else {
104104
return std::string();
105105
}
@@ -138,7 +138,7 @@ class ExecutorThread {
138138
AtomicValue<hrtime_t> now; // record of current time
139139
AtomicValue<hrtime_t> waketime; // set to the earliest
140140

141-
hrtime_t taskStart;
141+
Couchbase::RelaxedAtomic<hrtime_t> taskStart;
142142

143143
Mutex currentTaskMutex; // Protects currentTask
144144
ExTask currentTask;

0 commit comments

Comments
 (0)