blob: f6e7a225ba137015ce1b20af72de0f3bb3166596 [file] [log] [blame]
// 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