brintos

brintos / llvm-project-archived public Read only

0
0
Text · 700 B · 140a2a3 Raw
29 lines · cpp
1// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s2#include "java.h"3 4void *Thread(void *p) {5  barrier_wait(&barrier);6  *(int*)p = 42;7  return 0;8}9 10int main() {11  barrier_init(&barrier, 2);12  int const kHeapSize = 1024 * 1024;13  jptr jheap = (jptr)malloc(kHeapSize + 8) + 8;14  __tsan_java_init(jheap, kHeapSize);15  const int kBlockSize = 16;16  __tsan_java_alloc(jheap, kBlockSize);17  pthread_t th;18  pthread_create(&th, 0, Thread, (void*)jheap);19  *(int*)jheap = 43;20  barrier_wait(&barrier);21  pthread_join(th, 0);22  __tsan_java_free(jheap, kBlockSize);23  fprintf(stderr, "DONE\n");24  return __tsan_java_fini();25}26 27// CHECK: WARNING: ThreadSanitizer: data race28// CHECK: DONE29