summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-11-09 21:27:58 +0000
committerReid Kleckner <rnk@google.com>2016-11-09 21:27:58 +0000
commit76b4261082ca12aac7d212d9310b0ac8510877a9 (patch)
tree6d994731c8a32a957d0a6ae2100f8ac65b4a0c23
parent67d1a412267784d2d78d0f37e772a32b7b6129e7 (diff)
downloadbcm5719-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.cc3
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) {
OpenPOWER on IntegriCloud