[compiler-rt] r257585 - tsan: check errors in test

Dmitry Vyukov via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 13 02:14:08 PST 2016


Author: dvyukov
Date: Wed Jan 13 04:14:05 2016
New Revision: 257585

URL: http://llvm.org/viewvc/llvm-project?rev=257585&view=rev
Log:
tsan: check errors in test

Somebody reported flakiness of this test.
Let's start by checking errors.


Modified:
    compiler-rt/trunk/test/tsan/mmap_stress.cc

Modified: compiler-rt/trunk/test/tsan/mmap_stress.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/mmap_stress.cc?rev=257585&r1=257584&r2=257585&view=diff
==============================================================================
--- compiler-rt/trunk/test/tsan/mmap_stress.cc (original)
+++ compiler-rt/trunk/test/tsan/mmap_stress.cc Wed Jan 13 04:14:05 2016
@@ -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");
 }
 




More information about the llvm-commits mailing list