15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 24536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov#include <pthread.h> 34536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov#include <unistd.h> 44536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov 54536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukovvoid *Thread(void *x) { 64536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov return 0; 74536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov} 84536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov 94536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukovint main() { 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines volatile int N = 5; // prevent loop unrolling 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines for (int i = 0; i < N; i++) { 124536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov pthread_t t; 134536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov pthread_create(&t, 0, Thread, 0); 144536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov } 154536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov sleep(1); 164536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov return 0; 174536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov} 184536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov 194536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov// CHECK: WARNING: ThreadSanitizer: thread leak 204536cb1fa7734133f404acb413589d7a6d314f4aDmitry Vyukov// CHECK: And 4 more similar thread leaks 21