[asan/win] Move breakpoint from Abort to internal__exit
authorReid Kleckner <rnk@google.com>
Thu, 10 Nov 2016 20:44:05 +0000 (20:44 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 10 Nov 2016 20:44:05 +0000 (20:44 +0000)
Now that we use TerminateProcess, the debugger doesn't stop on program
exit. Add this breakpoint so that the debugger stops after asan reports
an error and is prepared to exit the program.

llvm-svn: 286501

compiler-rt/lib/sanitizer_common/sanitizer_win.cc

index 54c15a5..3aff923 100644 (file)
@@ -425,8 +425,6 @@ u64 NanoTime() {
 }
 
 void Abort() {
-  if (::IsDebuggerPresent())
-    __debugbreak();
   internal__exit(3);
 }
 
@@ -657,6 +655,10 @@ uptr internal_sched_yield() {
 
 void internal__exit(int exitcode) {
   // ExitProcess runs some finalizers, so use TerminateProcess to avoid that.
+  // The debugger doesn't stop on TerminateProcess like it does on ExitProcess,
+  // so add our own breakpoint here.
+  if (::IsDebuggerPresent())
+    __debugbreak();
   TerminateProcess(GetCurrentProcess(), 3);
 }