xref: /llvm-project/compiler-rt/test/lsan/TestCases/print_threads.c (revision bbccc521c6a0de151c4d7a34e7f78ae47f3a3298)
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