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