1 // RUN: %clangxx_tsan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s
6 void *Thread1(void *p
) {
11 void *Thread2(void *p
) {
20 void *AllocThread(void* arg
) {
27 pthread_create(&t
[0], 0, AllocThread
, 0);
28 pthread_join(t
[0], &p
);
29 fprintf(stderr
, "addr=%p\n", p
);
30 pthread_create(&t
[0], 0, Thread1
, (char*)p
+ 16);
31 pthread_create(&t
[1], 0, Thread2
, (char*)p
+ 16);
32 pthread_join(t
[0], 0);
33 pthread_join(t
[1], 0);
37 // CHECK: addr=[[ADDR:0x[0-9,a-f]+]]
38 // CHECK: WARNING: ThreadSanitizer: data race
40 // CHECK: Location is heap block of size 99 at [[ADDR]] allocated by thread T1:
42 // CHECK: #{{1|2}} alloc
43 // CHECK: #{{2|3}} AllocThread
45 // CHECK: Thread T1 (tid={{.*}}, finished) created by main thread at:
46 // CHECK: #0 pthread_create