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 Song int 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