// Test that thread local data is handled correctly after forking without exec(). | |
// RUN: %clangxx_lsan %s -o %t | |
// RUN: %run %t 2>&1 | |
#include <assert.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <sys/wait.h> | |
#include <unistd.h> | |
__thread void *thread_local_var; | |
int main() { | |
int status = 0; | |
thread_local_var = malloc(1337); | |
pid_t pid = fork(); | |
assert(pid >= 0); | |
if (pid > 0) { | |
waitpid(pid, &status, 0); | |
assert(WIFEXITED(status)); | |
return WEXITSTATUS(status); | |
} | |
return 0; | |
} |