summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/tsan/rtl/tsan_rtl.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/tsan/rtl/tsan_rtl.cc b/lib/tsan/rtl/tsan_rtl.cc
index 962c07a5b..3860073f7 100644
--- a/lib/tsan/rtl/tsan_rtl.cc
+++ b/lib/tsan/rtl/tsan_rtl.cc
@@ -433,9 +433,11 @@ static void MemoryRangeSet(ThreadState *thr, uptr pc, uptr addr, uptr size,
addr += offset;
size -= offset;
}
- CHECK_EQ(addr % 8, 0);
- CHECK(IsAppMem(addr));
- CHECK(IsAppMem(addr + size - 1));
+ DCHECK_EQ(addr % 8, 0);
+ // If a user passes some insane arguments (memset(0)),
+ // let it just crash as usual.
+ if (!IsAppMem(addr) || !IsAppMem(addr + size - 1))
+ return;
(void)thr;
(void)pc;
// Some programs mmap like hundreds of GBs but actually used a small part.