[PATCH] D41191: [tsan] Use MonotonicNanoTime instead of NanoTime
Kuba (Brecka) Mracek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 13 10:48:31 PST 2017
kubamracek created this revision.
kubamracek added reviewers: dvyukov, kcc.
kubamracek added a project: Sanitizers.
Herald added a subscriber: Sanitizers.
Looks like there's a few places in TSan where we should really be using MonotonicNanoTime to avoid jumps in wall time.
Repository:
rCRT Compiler Runtime
https://reviews.llvm.org/D41191
Files:
lib/tsan/rtl/tsan_rtl.cc
lib/tsan/rtl/tsan_rtl_report.cc
Index: lib/tsan/rtl/tsan_rtl_report.cc
===================================================================
--- lib/tsan/rtl/tsan_rtl_report.cc
+++ lib/tsan/rtl/tsan_rtl_report.cc
@@ -503,7 +503,7 @@
bool OutputReport(ThreadState *thr, const ScopedReport &srep) {
if (!flags()->report_bugs || thr->suppress_reports)
return false;
- atomic_store_relaxed(&ctx->last_symbolize_time_ns, NanoTime());
+ atomic_store_relaxed(&ctx->last_symbolize_time_ns, MonotonicNanoTime());
const ReportDesc *rep = srep.GetReport();
CHECK_EQ(thr->current_report, nullptr);
thr->current_report = rep;
Index: lib/tsan/rtl/tsan_rtl.cc
===================================================================
--- lib/tsan/rtl/tsan_rtl.cc
+++ lib/tsan/rtl/tsan_rtl.cc
@@ -172,20 +172,20 @@
}
}
- u64 last_flush = NanoTime();
+ u64 last_flush = MonotonicNanoTime();
uptr last_rss = 0;
for (int i = 0;
atomic_load(&ctx->stop_background_thread, memory_order_relaxed) == 0;
i++) {
SleepForMillis(100);
- u64 now = NanoTime();
+ u64 now = MonotonicNanoTime();
// Flush memory if requested.
if (flags()->flush_memory_ms > 0) {
if (last_flush + flags()->flush_memory_ms * kMs2Ns < now) {
VPrintf(1, "ThreadSanitizer: periodic memory flush\n");
FlushShadowMemory();
- last_flush = NanoTime();
+ last_flush = MonotonicNanoTime();
}
}
// GetRSS can be expensive on huge programs, so don't do it every 100ms.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41191.126789.patch
Type: text/x-patch
Size: 1498 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171213/58033ca5/attachment.bin>
More information about the llvm-commits
mailing list