Index: chrome/browser/hang_monitor/hang_crash_dump_win.cc |
=================================================================== |
--- chrome/browser/hang_monitor/hang_crash_dump_win.cc (revision 134453) |
+++ chrome/browser/hang_monitor/hang_crash_dump_win.cc (working copy) |
@@ -1,45 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/hang_monitor/hang_crash_dump_win.h" |
- |
-#include "chrome/common/chrome_constants.h" |
-#include "content/public/common/result_codes.h" |
- |
-namespace { |
- |
-// This function will be called via an injected thread in the hung plugin |
-// process. calling DumpProcessWithoutCrash causes breakpad to capture a dump of |
-// the process. |
-DWORD WINAPI HungPluginDumpAndExit(void*) { |
- typedef void (__cdecl *DumpProcessFunction)(); |
- DumpProcessFunction request_dump = reinterpret_cast<DumpProcessFunction>( |
- GetProcAddress(GetModuleHandle(chrome::kBrowserProcessExecutableName), |
- "DumpProcessWithoutCrash")); |
- if (request_dump) |
- request_dump(); |
- return 0; |
-} |
- |
-// How long do we wait for the terminated thread or process to die (in ms) |
-static const int kTerminateTimeoutMS = 2000; |
- |
-// How long do we wait for the crash to be generated (in ms). |
-static const int kGenerateDumpTimeoutMS = 10000; |
- |
-} // namespace |
- |
-void CrashDumpAndTerminateHungChildProcess(HANDLE hprocess) { |
- // Before terminating the process we try collecting a dump. Which |
- // a transient thread in the child process will do for us. |
- HANDLE remote_thread = CreateRemoteThread(hprocess, NULL, 0, |
- &HungPluginDumpAndExit, 0, 0, NULL); |
- if (remote_thread) { |
- WaitForSingleObject(remote_thread, kGenerateDumpTimeoutMS); |
- CloseHandle(remote_thread); |
- } |
- |
- TerminateProcess(hprocess, content::RESULT_CODE_HUNG); |
- WaitForSingleObject(hprocess, kTerminateTimeoutMS); |
-} |