diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2016-01-13 10:14:05 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2016-01-13 10:14:05 +0000 |
commit | 529b940a77a8abf4e2ba99f5d1b4e821e0b8a696 (patch) | |
tree | c781cd6c790151eb70cc639bbe86788c77f8a626 | |
parent | aee5073532edecde5eb3b40daefc02d6a3fa2cbe (diff) | |
download | bcm5719-llvm-529b940a77a8abf4e2ba99f5d1b4e821e0b8a696.tar.gz bcm5719-llvm-529b940a77a8abf4e2ba99f5d1b4e821e0b8a696.zip |
tsan: check errors in test
Somebody reported flakiness of this test.
Let's start by checking errors.
llvm-svn: 257585
-rw-r--r-- | compiler-rt/test/tsan/mmap_stress.cc | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/compiler-rt/test/tsan/mmap_stress.cc b/compiler-rt/test/tsan/mmap_stress.cc index 5e3904adf90..e01e7e92b8f 100644 --- a/compiler-rt/test/tsan/mmap_stress.cc +++ b/compiler-rt/test/tsan/mmap_stress.cc @@ -9,8 +9,11 @@ void *SubWorker(void *arg) { for (int i = 0; i < 500; i++) { int *ptr = (int*)mmap(0, kMmapSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + if (ptr == MAP_FAILED) + exit(printf("mmap failed: %d\n", errno)); *ptr = 42; - munmap(ptr, kMmapSize); + if (munmap(ptr, kMmapSize)) + exit(printf("munmap failed: %d\n", errno)); } return 0; } @@ -18,29 +21,41 @@ void *SubWorker(void *arg) { void *Worker1(void *arg) { (void)arg; pthread_t th[4]; - for (int i = 0; i < 4; i++) - pthread_create(&th[i], 0, SubWorker, 0); - for (int i = 0; i < 4; i++) - pthread_join(th[i], 0); + for (int i = 0; i < 4; i++) { + if (pthread_create(&th[i], 0, SubWorker, 0)) + exit(printf("pthread_create failed: %d\n", errno)); + } + for (int i = 0; i < 4; i++) { + if (pthread_join(th[i], 0)) + exit(printf("pthread_join failed: %d\n", errno)); + } return 0; } void *Worker(void *arg) { (void)arg; pthread_t th[4]; - for (int i = 0; i < 4; i++) - pthread_create(&th[i], 0, Worker1, 0); - for (int i = 0; i < 4; i++) - pthread_join(th[i], 0); + for (int i = 0; i < 4; i++) { + if (pthread_create(&th[i], 0, Worker1, 0)) + exit(printf("pthread_create failed: %d\n", errno)); + } + for (int i = 0; i < 4; i++) { + if (pthread_join(th[i], 0)) + exit(printf("pthread_join failed: %d\n", errno)); + } return 0; } int main() { pthread_t th[4]; - for (int i = 0; i < 4; i++) - pthread_create(&th[i], 0, Worker, 0); - for (int i = 0; i < 4; i++) - pthread_join(th[i], 0); + for (int i = 0; i < 4; i++) { + if (pthread_create(&th[i], 0, Worker, 0)) + exit(printf("pthread_create failed: %d\n", errno)); + } + for (int i = 0; i < 4; i++) { + if (pthread_join(th[i], 0)) + exit(printf("pthread_join failed: %d\n", errno)); + } fprintf(stderr, "DONE\n"); } |