1/* { dg-shouldfail "tsan" } */ 2/* { dg-additional-options "-ldl" } */ 3 4#include <pthread.h> 5#include "tsan_barrier.h" 6 7static pthread_barrier_t barrier; 8 9void *Thread(void *x) { 10 pthread_mutex_lock((pthread_mutex_t*)x); 11 pthread_mutex_unlock((pthread_mutex_t*)x); 12 barrier_wait(&barrier); 13 return 0; 14} 15 16int main() { 17 barrier_init(&barrier, 2); 18 pthread_mutex_t Mtx; 19 pthread_mutex_init(&Mtx, 0); 20 pthread_t t; 21 pthread_create(&t, 0, Thread, &Mtx); 22 barrier_wait(&barrier); 23 pthread_mutex_destroy(&Mtx); 24 pthread_join(t, 0); 25 return 0; 26} 27 28/* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */ 29