diff options
Diffstat (limited to 'test/tsan/signal_errno.cc')
-rw-r--r-- | test/tsan/signal_errno.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/test/tsan/signal_errno.cc b/test/tsan/signal_errno.cc index 1fa20f36810b..8305e84930f3 100644 --- a/test/tsan/signal_errno.cc +++ b/test/tsan/signal_errno.cc @@ -1,10 +1,7 @@ // RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> +#include "test.h" #include <signal.h> #include <sys/types.h> -#include <unistd.h> #include <errno.h> pthread_t mainth; @@ -16,12 +13,13 @@ static void MyHandler(int, siginfo_t *s, void *c) { } static void* sendsignal(void *p) { - sleep(1); + barrier_wait(&barrier); pthread_kill(mainth, SIGPROF); return 0; } static __attribute__((noinline)) void loop() { + barrier_wait(&barrier); while (done == 0) { volatile char *p = (char*)malloc(1); p[0] = 0; @@ -31,6 +29,7 @@ static __attribute__((noinline)) void loop() { } int main() { + barrier_init(&barrier, 2); mainth = pthread_self(); struct sigaction act = {}; act.sa_sigaction = &MyHandler; |