Skip to content

Commit 136999c

Browse files
abhinavdangetichiyoung
authored andcommitted
Address data race while printing ep_expiry_pager_task_time
WARNING: ThreadSanitizer: data race (pid=5892) Atomic write of size 8 at 0x7d780000f788 by thread T20: #0 __tsan_atomic64_store <null>:0 (engine_testapp+0x00000009b837) couchbase#1 std::__atomic_base<unsigned long>::store(unsigned long, std::memory_order) /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/atomic_base.h:474 (ep.so+0x000000104462) couchbase#2 ExecutorThread::run() /home/abhinav/couchbase/ep-engine/src/executorthread.cc:112 (ep.so+0x0000000f89a6) couchbase#3 launch_executor_thread(void*) /home/abhinav/couchbase/ep-engine/src/executorthread.cc:33 (ep.so+0x0000000f8545) couchbase#4 platform_thread_wrap /home/abhinav/couchbase/platform/src/cb_pthreads.c:23 (libplatform.so.0.1.0+0x000000003d31) Previous read of size 8 at 0x7d780000f788 by main thread (mutexes: write M57136293536132864): #0 gmtime_r <null>:0 (engine_testapp+0x00000006235e) couchbase#1 cb_gmtime_r /home/abhinav/couchbase/platform/src/cb_time.c:92 (libplatform.so.0.1.0+0x0000000063de) couchbase#2 EventuallyPersistentEngine::doEngineStats(void const*, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:3544 (ep.so+0x0000000bdf1d) couchbase#3 EventuallyPersistentEngine::getStats(void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:4554 (ep.so+0x0000000c52fc) couchbase#4 EvpGetStats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/ep-engine/src/ep_engine.cc:213 (ep.so+0x0000000b441e) couchbase#5 mock_get_stats(engine_interface*, void const*, char const*, int, void (*)(char const*, unsigned short, char const*, unsigned int, void const*)) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:239 (engine_testapp+0x0000000ba9ad) #6 get_int_stat(engine_interface*, engine_interface_v1*, char const*, char const*) /home/abhinav/couchbase/ep-engine/tests/ep_test_apis.cc:990 (ep_testsuite.so+0x0000000aeb81) #7 wait_for_stat_change(engine_interface*, engine_interface_v1*, char const*, int, char const*, long) /home/abhinav/couchbase/ep-engine/tests/ep_test_apis.cc:1108 (ep_testsuite.so+0x0000000b4f93) #8 test_expiration_on_warmup(engine_interface*, engine_interface_v1*) /home/abhinav/couchbase/ep-engine/tests/ep_testsuite.cc:2402 (ep_testsuite.so+0x00000001d2cb) #9 execute_test(test, char const*, char const*) /home/abhinav/couchbase/memcached/programs/engine_testapp/engine_testapp.cc:1090 (engine_testapp+0x0000000b946c) #10 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287 (libc.so.6+0x000000021ec4) Change-Id: Ibfdcc6df03fd968be6fdd694ca5ba979bb36068c Reviewed-on: http://review.couchbase.org/55789 Tested-by: buildbot <build@couchbase.com> Reviewed-by: Chiyoung Seo <chiyoung@couchbase.com>
1 parent 698c84a commit 136999c

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

src/ep_engine.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3541,7 +3541,8 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::doEngineStats(const void *cookie,
35413541
if (epstore->isExpPagerEnabled()) {
35423542
char timestr[20];
35433543
struct tm expPagerTim;
3544-
if (cb_gmtime_r((time_t *)&epstats.expPagerTime, &expPagerTim) == -1) {
3544+
hrtime_t expPagerTime = epstats.expPagerTime.load();
3545+
if (cb_gmtime_r((time_t *)&expPagerTime, &expPagerTim) == -1) {
35453546
add_casted_stat("ep_expiry_pager_task_time", "UNKNOWN", add_stat,
35463547
cookie);
35473548
} else {

0 commit comments

Comments
 (0)