From: Dmitry Vyukov Date: Fri, 30 Nov 2012 06:39:01 +0000 (+0000) Subject: tsan: fix bug that leads to spurious use-after-free reports X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0a4d875c4825468cfbe8ec4d8c399dc606a5ec52;p=platform%2Fupstream%2Fllvm.git tsan: fix bug that leads to spurious use-after-free reports llvm-svn: 168985 --- diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl.cc index e252728..26ad784 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cc @@ -519,6 +519,7 @@ void MemoryResetRange(ThreadState *thr, uptr pc, uptr addr, uptr size) { 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 MemoryRangeFreed(ThreadState *thr, uptr pc, uptr addr, uptr size) { 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());