1bcaeed49SFangrui Song // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2*8214764fSDmitry Vyukov #include "test.h" 3bcaeed49SFangrui Song 4bcaeed49SFangrui Song int Global; 5bcaeed49SFangrui Song pthread_mutex_t Mutex = PTHREAD_MUTEX_INITIALIZER; 6bcaeed49SFangrui Song Thread(void * x)7bcaeed49SFangrui Songvoid *Thread(void *x) { 8bcaeed49SFangrui Song AnnotateIgnoreSyncBegin(0, 0); 9bcaeed49SFangrui Song pthread_mutex_lock(&Mutex); 10bcaeed49SFangrui Song Global++; 11bcaeed49SFangrui Song pthread_mutex_unlock(&Mutex); 12bcaeed49SFangrui Song AnnotateIgnoreSyncEnd(0, 0); 13bcaeed49SFangrui Song return 0; 14bcaeed49SFangrui Song } 15bcaeed49SFangrui Song main()16bcaeed49SFangrui Songint main() { 17bcaeed49SFangrui Song pthread_t t; 18bcaeed49SFangrui Song pthread_create(&t, 0, Thread, 0); 19bcaeed49SFangrui Song pthread_mutex_lock(&Mutex); 20bcaeed49SFangrui Song Global++; 21bcaeed49SFangrui Song pthread_mutex_unlock(&Mutex); 22bcaeed49SFangrui Song pthread_join(t, 0); 23bcaeed49SFangrui Song } 24bcaeed49SFangrui Song 25bcaeed49SFangrui Song // CHECK: WARNING: ThreadSanitizer: data race 26bcaeed49SFangrui Song 27