summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc
diff options
context:
space:
mode:
authorAlex Shlyapnikov <alekseys@google.com>2018-06-18 20:03:31 +0000
committerAlex Shlyapnikov <alekseys@google.com>2018-06-18 20:03:31 +0000
commitc75d47b52d10e68a55594802ca4fd58dad1c363e (patch)
tree08ac84c30d32869c7b885bc2ddf0da1478d511bb /compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc
parent80274b1ce74d3c415798e7bba81439ba33693f1a (diff)
downloadbcm5719-llvm-c75d47b52d10e68a55594802ca4fd58dad1c363e.tar.gz
bcm5719-llvm-c75d47b52d10e68a55594802ca4fd58dad1c363e.zip
[TSan] Report proper error on allocator failures instead of CHECK(0)-ing
Summary: Following up on and complementing D44404 and other sanitizer allocators. Currently many allocator specific errors (OOM, for example) are reported as a text message and CHECK(0) termination, no stack, no details, not too helpful nor informative. To improve the situation, detailed and structured common errors were defined and reported under the appropriate conditions. Common tests were generalized a bit to cover a slightly different TSan stack reporting format, extended to verify errno value and returned pointer value check is now explicit to facilitate debugging. Reviewers: dvyukov Subscribers: srhines, kubamracek, delcypher, #sanitizers, llvm-commits Differential Revision: https://reviews.llvm.org/D48087 llvm-svn: 334975
Diffstat (limited to 'compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc')
-rw-r--r--compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc b/compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc
index 93421af19da..537c57e1a69 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/pvalloc-overflow.cc
@@ -6,7 +6,7 @@
// REQUIRES: stable-runtime
-// UNSUPPORTED: android, freebsd, netbsd, tsan, ubsan
+// UNSUPPORTED: android, freebsd, netbsd, ubsan
// Checks that pvalloc overflows are caught. If the allocator is allowed to
// return null, the errno should be set to ENOMEM.
@@ -14,6 +14,7 @@
#include <assert.h>
#include <errno.h>
#include <malloc.h>
+#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
@@ -32,15 +33,15 @@ int main(int argc, char *argv[]) {
} else {
assert(0);
}
+ // CHECK: {{ERROR: .*Sanitizer: pvalloc parameters overflow: size .* rounded up to system page size .* cannot be represented in type size_t}}
+ // CHECK: {{#0 .*pvalloc}}
+ // CHECK: {{#1 .*main .*pvalloc-overflow.cc:}}
+ // CHECK: {{SUMMARY: .*Sanitizer: pvalloc-overflow}}
- fprintf(stderr, "errno: %d\n", errno);
+ // The NULL pointer is printed differently on different systems, while (long)0
+ // is always the same.
+ fprintf(stderr, "errno: %d, p: %lx\n", errno, (long)p);
+ // CHECK-NULL: errno: 12, p: 0
- return p != nullptr;
+ return 0;
}
-
-// CHECK: {{ERROR: .*Sanitizer: pvalloc parameters overflow: size .* rounded up to system page size .* cannot be represented in type size_t}}
-// CHECK: {{#0 0x.* in .*pvalloc}}
-// CHECK: {{#1 0x.* in main .*pvalloc-overflow.cc:}}
-// CHECK: {{SUMMARY: .*Sanitizer: pvalloc-overflow}}
-
-// CHECK-NULL: errno: 12
OpenPOWER on IntegriCloud