summaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/tsan_rtl_report.cc
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-12-04 12:19:53 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-12-04 12:19:53 +0000
commit0415ac00935795a70d87ae662ccad58ea0704537 (patch)
tree7d487c30b84708c14c6c39dba29989054f7f7eb7 /lib/tsan/rtl/tsan_rtl_report.cc
parent43811a14504f1ff473b40c194a3e9054e2ea46a4 (diff)
downloadcompiler-rt-0415ac00935795a70d87ae662ccad58ea0704537.tar.gz
compiler-rt-0415ac00935795a70d87ae662ccad58ea0704537.tar.bz2
compiler-rt-0415ac00935795a70d87ae662ccad58ea0704537.tar.xz
tsan: fix trace handling when trace is reused between threads
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@169259 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_rtl_report.cc')
-rw-r--r--lib/tsan/rtl/tsan_rtl_report.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/tsan/rtl/tsan_rtl_report.cc b/lib/tsan/rtl/tsan_rtl_report.cc
index 3ca05622..dd967b9a 100644
--- a/lib/tsan/rtl/tsan_rtl_report.cc
+++ b/lib/tsan/rtl/tsan_rtl_report.cc
@@ -265,12 +265,12 @@ void RestoreStack(int tid, const u64 epoch, StackTrace *stk) {
return;
}
Lock l(&trace->mtx);
- const int partidx = (epoch / (TraceSize() / kTraceParts)) % kTraceParts;
+ const int partidx = (epoch / kTracePartSize) % TraceParts();
TraceHeader* hdr = &trace->headers[partidx];
if (epoch < hdr->epoch0)
return;
const u64 eend = epoch % TraceSize();
- const u64 ebegin = eend / kTracePartSize * kTracePartSize;
+ const u64 ebegin = RoundDown(eend, kTracePartSize);
DPrintf("#%d: RestoreStack epoch=%zu ebegin=%zu eend=%zu partidx=%d\n",
tid, (uptr)epoch, (uptr)ebegin, (uptr)eend, partidx);
InternalScopedBuffer<uptr> stack(1024); // FIXME: de-hardcode 1024