diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2015-01-21 13:50:02 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2015-01-21 13:50:02 +0000 |
commit | 3ab6b2347e8d940b0687fb693c861c68d1e50998 (patch) | |
tree | f09bef7d67646f964ad364f8d43a027ce82bd419 /compiler-rt/test/tsan/fork_multithreaded.cc | |
parent | 79ca0fd1a02132ef3d85aacbfc4ab5eab5911c08 (diff) | |
download | bcm5719-llvm-3ab6b2347e8d940b0687fb693c861c68d1e50998.tar.gz bcm5719-llvm-3ab6b2347e8d940b0687fb693c861c68d1e50998.zip |
tsan: remove sleeps from tests
Even sleep(1) lead to episodical flakes on some machines.
Use an invisible by tsan barrier to enforce required execution order instead.
This makes the tests deterministic and faster.
llvm-svn: 226659
Diffstat (limited to 'compiler-rt/test/tsan/fork_multithreaded.cc')
-rw-r--r-- | compiler-rt/test/tsan/fork_multithreaded.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/compiler-rt/test/tsan/fork_multithreaded.cc b/compiler-rt/test/tsan/fork_multithreaded.cc index 5176a14d6a6..3ddb417c7cb 100644 --- a/compiler-rt/test/tsan/fork_multithreaded.cc +++ b/compiler-rt/test/tsan/fork_multithreaded.cc @@ -1,19 +1,21 @@ // RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s -check-prefix=CHECK-DIE // RUN: %clangxx_tsan -O1 %s -o %t && TSAN_OPTIONS="die_after_fork=0" %run %t 2>&1 | FileCheck %s -check-prefix=CHECK-NODIE -#include <stdlib.h> -#include <stdio.h> +#include "test.h" #include <errno.h> -#include <pthread.h> -#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> static void *sleeper(void *p) { - sleep(10); + sleep(10); // not intended to exit during test + return 0; +} + +static void *nop(void *p) { return 0; } int main() { + barrier_init(&barrier, 2); pthread_t th; pthread_create(&th, 0, sleeper, 0); switch (fork()) { @@ -23,7 +25,7 @@ int main() { case 0: // child { pthread_t th2; - pthread_create(&th2, 0, sleeper, 0); + pthread_create(&th2, 0, nop, 0); exit(0); break; } |