[llvm-commits] [compiler-rt] r168985 - /compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc

Dmitry Vyukov dvyukov at google.com
Thu Nov 29 22:39:01 PST 2012


Author: dvyukov
Date: Fri Nov 30 00:39:01 2012
New Revision: 168985

URL: http://llvm.org/viewvc/llvm-project?rev=168985&view=rev
Log:
tsan: fix bug that leads to spurious use-after-free reports

Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc?rev=168985&r1=168984&r2=168985&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl.cc Fri Nov 30 00:39:01 2012
@@ -519,6 +519,7 @@
 void MemoryRangeFreed(ThreadState *thr, uptr pc, uptr addr, uptr size) {
   MemoryAccessRange(thr, pc, addr, size, true);
   Shadow s(thr->fast_state);
+  s.ClearIgnoreBit();
   s.MarkAsFreed();
   s.SetWrite(true);
   s.SetAddr0AndSizeLog(0, 3);
@@ -527,6 +528,7 @@
 
 void MemoryRangeImitateWrite(ThreadState *thr, uptr pc, uptr addr, uptr size) {
   Shadow s(thr->fast_state);
+  s.ClearIgnoreBit();
   s.SetWrite(true);
   s.SetAddr0AndSizeLog(0, 3);
   MemoryRangeSet(thr, pc, addr, size, s.raw());





More information about the llvm-commits mailing list