summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-11-22 08:42:01 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-11-22 08:42:01 +0000
commit35437032be8df1f33594ea35101e8bcfb2429e92 (patch)
tree33c91b5645f59ba12f478cd6f1743179f80dad52
parent68ab5ecd757c6e61593fc73adcd7e7e5e3dbef86 (diff)
downloadbcm5719-llvm-35437032be8df1f33594ea35101e8bcfb2429e92.tar.gz
bcm5719-llvm-35437032be8df1f33594ea35101e8bcfb2429e92.zip
tsan: better error message for OOM
llvm-svn: 168491
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_allocator64.h7
-rw-r--r--compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc2
2 files changed, 7 insertions, 2 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator64.h b/compiler-rt/lib/sanitizer_common/sanitizer_allocator64.h
index d0341ad6ead..a537ff0c46a 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator64.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator64.h
@@ -277,7 +277,12 @@ class SizeClassAllocator64 {
} while (idx < end_idx);
region->allocated_user += idx - beg_idx;
region->allocated_meta += i * kMetadataSize;
- CHECK_LT(region->allocated_user + region->allocated_meta, kRegionSize);
+ if (region->allocated_user + region->allocated_meta > kRegionSize) {
+ Printf("Out of memory. Dying.\n");
+ Printf("The process has exhausted %zuMB for size class %zu.\n",
+ kRegionSize / 1024 / 1024, size);
+ Die();
+ }
}
void *AllocateBySizeClass(uptr class_id) {
diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc b/compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc
index bf7684867f7..2d97d3ab2ad 100644
--- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc
+++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc
@@ -136,7 +136,7 @@ void FailInAssertionOnOOM() {
TEST(SanitizerCommon, SizeClassAllocator64Overflow) {
EXPECT_DEATH(FailInAssertionOnOOM(),
- "allocated_user.*allocated_meta.*kRegionSize");
+ "Out of memory");
}
TEST(SanitizerCommon, LargeMmapAllocator) {
OpenPOWER on IntegriCloud