The test flaked on bots: http://green.lab.llvm.org/green/job/lldb-cmake/38666/ The test expects that tsan will detect a single race with concurrent memory accesses. TSan doesn't do this reliably. Run 100 iterations of the racing threads, which should make the race much more likely to be detected. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D114444
33 lines
592 B
C
33 lines
592 B
C
#include <pthread.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
char *pointer;
|
|
|
|
void *f1(void *p) {
|
|
pointer[0] = 'x'; // thread1 line
|
|
return NULL;
|
|
}
|
|
|
|
void *f2(void *p) {
|
|
pointer[0] = 'y'; // thread2 line
|
|
return NULL;
|
|
}
|
|
|
|
int main (int argc, char const *argv[])
|
|
{
|
|
for (int i = 0; i < 100; i++) {
|
|
pointer = (char *)malloc(10); // malloc line
|
|
|
|
pthread_t t1, t2;
|
|
pthread_create(&t1, NULL, f1, NULL);
|
|
pthread_create(&t2, NULL, f2, NULL);
|
|
|
|
pthread_join(t1, NULL);
|
|
pthread_join(t2, NULL);
|
|
|
|
free(pointer);
|
|
}
|
|
return 0;
|
|
}
|