diff options
Diffstat (limited to 'test/lsan/TestCases/Linux/fork_threaded.cc')
| -rw-r--r-- | test/lsan/TestCases/Linux/fork_threaded.cc | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/test/lsan/TestCases/Linux/fork_threaded.cc b/test/lsan/TestCases/Linux/fork_threaded.cc deleted file mode 100644 index 62702b4dfe47..000000000000 --- a/test/lsan/TestCases/Linux/fork_threaded.cc +++ /dev/null @@ -1,43 +0,0 @@ -// Test that thread local data is handled correctly after forking without -// exec(). In this test leak checking is initiated from a non-main thread. -// RUN: %clangxx_lsan %s -o %t -// RUN: %run %t 2>&1 - -#include <assert.h> -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/wait.h> -#include <unistd.h> - -__thread void *thread_local_var; - -void *exit_thread_func(void *arg) { - exit(0); -} - -void ExitFromThread() { - pthread_t tid; - int res; - res = pthread_create(&tid, 0, exit_thread_func, 0); - assert(res == 0); - pthread_join(tid, 0); -} - -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); - } else { - // Spawn a thread and call exit() from there, to check that we track main - // thread's pid correctly even if leak checking is initiated from another - // thread. - ExitFromThread(); - } - return 0; -} |
