aboutsummaryrefslogtreecommitdiff
path: root/test/tsan
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-01-13 20:02:03 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-01-13 20:02:03 +0000
commitfc411a9eb44c912f867b49a08d4ea98be89681d9 (patch)
tree83d2530c824b866f040519d74b68316c571e0986 /test/tsan
parent4e3a0d5a8f750527f2f433019967f8f8214c558a (diff)
downloadsrc-fc411a9eb44c912f867b49a08d4ea98be89681d9.tar.gz
src-fc411a9eb44c912f867b49a08d4ea98be89681d9.zip
Vendor import of compiler-rt trunk r257626:vendor/compiler-rt/compiler-rt-trunk-r257626
Notes
Notes: svn path=/vendor/compiler-rt/dist/; revision=293842 svn path=/vendor/compiler-rt/compiler-rt-trunk-r257626/; revision=293843; tag=vendor/compiler-rt/compiler-rt-trunk-r257626
Diffstat (limited to 'test/tsan')
-rw-r--r--test/tsan/mmap_stress.cc41
1 files changed, 28 insertions, 13 deletions
diff --git a/test/tsan/mmap_stress.cc b/test/tsan/mmap_stress.cc
index 5e3904adf90b..e01e7e92b8f9 100644
--- a/test/tsan/mmap_stress.cc
+++ b/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");
}