diff options
author | Reid Kleckner <rnk@google.com> | 2016-11-09 21:27:58 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-11-09 21:27:58 +0000 |
commit | 76b4261082ca12aac7d212d9310b0ac8510877a9 (patch) | |
tree | 6d994731c8a32a957d0a6ae2100f8ac65b4a0c23 | |
parent | 67d1a412267784d2d78d0f37e772a32b7b6129e7 (diff) | |
download | bcm5719-llvm-76b4261082ca12aac7d212d9310b0ac8510877a9.tar.gz bcm5719-llvm-76b4261082ca12aac7d212d9310b0ac8510877a9.zip |
[asan/win] Use TerminateProcess when we want to exit abnormally
ExitProcess still runs some code which can lead to ASan interceptors
running after CHECK failure. This can lead to deadlock if it CHECK fails
again. Avoid that mess by really exiting immediately.
llvm-svn: 286395
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_win.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc index e029953017d..54c15a5695b 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc @@ -656,7 +656,8 @@ uptr internal_sched_yield() { } void internal__exit(int exitcode) { - ExitProcess(exitcode); + // ExitProcess runs some finalizers, so use TerminateProcess to avoid that. + TerminateProcess(GetCurrentProcess(), 3); } uptr internal_ftruncate(fd_t fd, uptr size) { |