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

source code of compiler-rt/test/lsan/TestCases/print_threads.c