1233f401cSDmitry Vyukov // RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2*3ab6b234SDmitry Vyukov #include "test.h" 3e6a6183eSAlexey Samsonov Thread(void * x)4e6a6183eSAlexey Samsonovvoid *Thread(void *x) { 5*3ab6b234SDmitry Vyukov barrier_wait(&barrier); 6e6a6183eSAlexey Samsonov return 0; 7e6a6183eSAlexey Samsonov } 8e6a6183eSAlexey Samsonov main()9e6a6183eSAlexey Samsonovint main() { 10e6a6183eSAlexey Samsonov volatile int N = 5; // prevent loop unrolling 11*3ab6b234SDmitry Vyukov barrier_init(&barrier, N + 1); 12e6a6183eSAlexey Samsonov for (int i = 0; i < N; i++) { 13e6a6183eSAlexey Samsonov pthread_t t; 14e6a6183eSAlexey Samsonov pthread_create(&t, 0, Thread, 0); 15e6a6183eSAlexey Samsonov } 16*3ab6b234SDmitry Vyukov barrier_wait(&barrier); 17*3ab6b234SDmitry Vyukov sleep(1); // wait for the threads to finish and exit 18e6a6183eSAlexey Samsonov return 0; 19e6a6183eSAlexey Samsonov } 20e6a6183eSAlexey Samsonov 21e6a6183eSAlexey Samsonov // CHECK: WARNING: ThreadSanitizer: thread leak 22e6a6183eSAlexey Samsonov // CHECK: And 4 more similar thread leaks 23