1 /* { dg-shouldfail "tsan" } */
2 /* { dg-additional-options "-ldl" } */
6 #include "tsan_barrier.h"
8 static pthread_barrier_t barrier
;
11 void *Thread1(void *x
) {
12 write(fds
[1], "a", 1);
13 barrier_wait(&barrier
);
17 void *Thread2(void *x
) {
18 barrier_wait(&barrier
);
25 barrier_init(&barrier
, 2);
28 pthread_create(&t
[0], NULL
, Thread1
, NULL
);
29 pthread_create(&t
[1], NULL
, Thread2
, NULL
);
30 pthread_join(t
[0], NULL
);
31 pthread_join(t
[1], NULL
);
35 /* { dg-output "WARNING: ThreadSanitizer: data race.*\n" } */
36 /* { dg-output " Write of size 8.*\n" } */
37 /* { dg-output " #0 close.*\n" } */
38 /* { dg-output " #1 Thread2.*\n" } */
39 /* { dg-output " Previous read of size 8.*\n" } */
40 /* { dg-output " #0 write.*\n" } */
41 /* { dg-output " #1 Thread1.*\n" } */