15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 23285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov#include <pthread.h> 33285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov#include <stdio.h> 43285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov#include <stddef.h> 53285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov#include <unistd.h> 63285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov 73285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukovvoid *Thread(void *x) { 83285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_mutex_lock((pthread_mutex_t*)x); 93285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_mutex_unlock((pthread_mutex_t*)x); 103285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov return 0; 113285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov} 123285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov 133285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukovint main() { 143285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_mutex_t Mtx; 153285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_mutex_init(&Mtx, 0); 163285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_t t; 173285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_create(&t, 0, Thread, &Mtx); 183285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov sleep(1); 193285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_mutex_destroy(&Mtx); 203285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov pthread_join(t, 0); 213285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov return 0; 223285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov} 233285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov 243285866e45a8521c56ba6209daf3c9f91f844fd3Dmitry Vyukov// CHECK: WARNING: ThreadSanitizer: data race 25