1fa81868fSVitaly Buka // RUN: %clang_lsan %s -o %t && %env_lsan_opts=log_threads=1 %run %t 2>&1 | FileCheck %s 2fa81868fSVitaly Buka 3fa81868fSVitaly Buka // XFAIL: hwasan 4fa81868fSVitaly Buka 5*bbccc521SVitaly Buka // No pthread barriers on Darwin. 6*bbccc521SVitaly Buka // UNSUPPORTED: darwin 7*bbccc521SVitaly Buka 8fa81868fSVitaly Buka #include <assert.h> 9fa81868fSVitaly Buka #include <pthread.h> 10fa81868fSVitaly Buka #include <sanitizer/lsan_interface.h> 11fa81868fSVitaly Buka #include <stdio.h> 12fa81868fSVitaly Buka #include <stdlib.h> 13fa81868fSVitaly Buka #include <unistd.h> 14fa81868fSVitaly Buka 15fa81868fSVitaly Buka pthread_barrier_t bar; 16fa81868fSVitaly Buka 17fa81868fSVitaly Buka void *threadfn(void *arg) { 18fa81868fSVitaly Buka pthread_barrier_wait(&bar); 19fa81868fSVitaly Buka sleep(10000); 20fa81868fSVitaly Buka return 0; 21fa81868fSVitaly Buka } 22fa81868fSVitaly Buka 23fa81868fSVitaly Buka int main(int argc, char *argv[]) { 24fa81868fSVitaly Buka pthread_t thread_id; 25fa81868fSVitaly Buka pthread_barrier_init(&bar, 0, 3); 26fa81868fSVitaly Buka 27fa81868fSVitaly Buka pthread_create(&thread_id, 0, threadfn, 0); 28fa81868fSVitaly Buka pthread_create(&thread_id, 0, threadfn, 0); 29fa81868fSVitaly Buka 30fa81868fSVitaly Buka pthread_barrier_wait(&bar); 31fa81868fSVitaly Buka return 0; 32fa81868fSVitaly Buka } 33fa81868fSVitaly Buka 34fa81868fSVitaly Buka // CHECK: Thread T0/{{[0-9]+}} was created by T-1 35fa81868fSVitaly Buka // CHECK: Thread T1/{{[0-9]+}} was created by T0/ 36fa81868fSVitaly Buka // CHECK: Thread T2/{{[0-9]+}} was created by T0/ 37