xref: /llvm-project/lldb/test/API/functionalities/tsan/basic/main.c (revision a114f151930d29967963fd22f328a906638a2818)
1 #include <pthread.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 
5 char *pointer;
6 
f1(void * p)7 void *f1(void *p) {
8     pointer[0] = 'x'; // thread1 line
9     return NULL;
10 }
11 
f2(void * p)12 void *f2(void *p) {
13     pointer[0] = 'y'; // thread2 line
14     return NULL;
15 }
16 
main(int argc,char const * argv[])17 int main (int argc, char const *argv[])
18 {
19     for (int i = 0; i < 100; i++) {
20         pointer = (char *)malloc(10); // malloc line
21 
22         pthread_t t1, t2;
23         pthread_create(&t1, NULL, f1, NULL);
24         pthread_create(&t2, NULL, f2, NULL);
25 
26         pthread_join(t1, NULL);
27         pthread_join(t2, NULL);
28 
29         free(pointer);
30     }
31     return 0;
32 }
33