1*bcaeed49SFangrui Song // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2*bcaeed49SFangrui Song #include <pthread.h> 3*bcaeed49SFangrui Song #include <unistd.h> 4*bcaeed49SFangrui Song main()5*bcaeed49SFangrui Songint main() { 6*bcaeed49SFangrui Song pthread_mutex_t m; 7*bcaeed49SFangrui Song pthread_mutex_init(&m, 0); 8*bcaeed49SFangrui Song pthread_mutex_lock(&m); 9*bcaeed49SFangrui Song pthread_mutex_destroy(&m); 10*bcaeed49SFangrui Song return 0; 11*bcaeed49SFangrui Song } 12*bcaeed49SFangrui Song 13*bcaeed49SFangrui Song // CHECK: WARNING: ThreadSanitizer: destroy of a locked mutex 14*bcaeed49SFangrui Song // CHECK: #0 pthread_mutex_destroy 15*bcaeed49SFangrui Song // CHECK: #1 main 16*bcaeed49SFangrui Song // CHECK: and: 17*bcaeed49SFangrui Song // CHECK: #0 pthread_mutex_lock 18*bcaeed49SFangrui Song // CHECK: #1 main 19*bcaeed49SFangrui Song // CHECK: Mutex {{.*}} created at: 20*bcaeed49SFangrui Song // CHECK: #0 pthread_mutex_init 21*bcaeed49SFangrui Song // CHECK: #1 main 22*bcaeed49SFangrui Song // CHECK: SUMMARY: ThreadSanitizer: destroy of a locked mutex{{.*}}main 23