1 /* { dg-set-target-env-var TSAN_OPTIONS "halt_on_error=1" } */
2 /* { dg-shouldfail "tsan" } */
3 /* { dg-additional-options "-ldl" } */
7 #include "tsan_barrier.h"
9 #define MAX_ITERATIONS_NUMBER 1
10 #define SLEEP_STEP 128000
12 static pthread_barrier_t barrier
;
13 unsigned int delay_time
= 1000;
15 static inline void delay () {
22 barrier_init(&barrier
, 2);
24 for (i
= 0; i
< MAX_ITERATIONS_NUMBER
; i
++) {
26 delay_time
+= delay_time
< 256000 ? delay_time
: SLEEP_STEP
;
33 void *Thread1(void *x
) {
34 barrier_wait(&barrier
);
40 void *Thread2(void *x
) {
42 barrier_wait(&barrier
);
48 pthread_create(&t
[0], NULL
, Thread1
, NULL
);
49 pthread_create(&t
[1], NULL
, Thread2
, NULL
);
50 pthread_join(t
[0], NULL
);
51 pthread_join(t
[1], NULL
);
55 /* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */