forked from OSchip/llvm-project
36 lines
652 B
C++
36 lines
652 B
C++
// RUN: %clangxx_msan %s -o %t && %run %t 2>&1 | FileCheck %s
|
|
|
|
#include <atomic>
|
|
#include <pthread.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
extern "C" int
|
|
__cxa_atexit(void (*func)(void *), void *arg, void *d);
|
|
|
|
void handler(void *) {
|
|
}
|
|
|
|
std::atomic_int counter;
|
|
|
|
void *thread(void *) {
|
|
for (int i = 0; i < 10000; ++i) {
|
|
__cxa_atexit(&handler, 0, (void *)&handler);
|
|
++counter;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int main(void) {
|
|
printf("TEST_MAIN\n");
|
|
pthread_t pt;
|
|
for (int i = 0; i < 2; ++i)
|
|
pthread_create(&pt, 0, &thread, 0);
|
|
while (counter < 1000) {
|
|
};
|
|
return 0;
|
|
}
|
|
// CHECK: TEST_MAIN
|
|
// CHECK-NOT: MemorySanitizer
|