Make sure the process is _really_ gone after a __debugbreak(). We've had a
few annoying cases where someone has been monitoring Chrome under windbg,
which can skip over __debugbreak() and then show them a scary-looking
access violation.

BUG=NONE
TEST=NONE

Review URL: http://codereview.chromium.org/6372008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72107 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc
index b865e65..2eacaf9 100644
--- a/base/debug/debugger_posix.cc
+++ b/base/debug/debugger_posix.cc
@@ -174,6 +174,9 @@
 
 void BreakDebugger() {
   DEBUG_BREAK();
+#if defined(NDEBUG)
+  _exit(1);
+#endif
 }
 
 }  // namespace debug
diff --git a/base/debug/debugger_win.cc b/base/debug/debugger_win.cc
index 3323b61..b13dbfd1 100644
--- a/base/debug/debugger_win.cc
+++ b/base/debug/debugger_win.cc
@@ -105,6 +105,9 @@
   if (IsDebugUISuppressed())
     _exit(1);
   __debugbreak();
+#if defined(NDEBUG)
+  _exit(1);
+#endif
 }
 
 }  // namespace debug
diff --git a/chrome/app/chrome_main.cc b/chrome/app/chrome_main.cc
index 6bf80cc..9cd4897 100644
--- a/chrome/app/chrome_main.cc
+++ b/chrome/app/chrome_main.cc
@@ -137,10 +137,12 @@
                       const wchar_t* file, unsigned int line,
                       uintptr_t reserved) {
   __debugbreak();
+  _exit(1);
 }
 
 void PureCall() {
   __debugbreak();
+  _exit(1);
 }
 
 #pragma warning(push)
@@ -162,6 +164,7 @@
   // the buffer is then used, it provides a handy mapping of memory starting at
   // address 0 for an attacker to utilize.
   __debugbreak();
+  _exit(1);
 }
 #pragma warning(pop)
 
diff --git a/chrome/plugin/plugin_main.cc b/chrome/plugin/plugin_main.cc
index 0dc05031..4268b0f 100644
--- a/chrome/plugin/plugin_main.cc
+++ b/chrome/plugin/plugin_main.cc
@@ -149,8 +149,10 @@
         BOOL result = run_security_tests(&test_count);
         DCHECK(result) << "Test number " << test_count << " has failed.";
         // If we are in release mode, crash or debug the process.
-        if (!result)
+        if (!result) {
           __debugbreak();
+          _exit(1);
+        }
       }
 
       FreeLibrary(sandbox_test_module);