diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 17:10:48 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 17:10:48 +0000 |
commit | d3c534e7b75703e244a87b7c396d075c9a409779 (patch) | |
tree | 4192b7344906d639897cfda8cfb2064894f473f7 /base/process_util_win.cc | |
parent | 7f4956df940f569afabef6885803d4d94f5c0a1e (diff) | |
download | chromium_src-d3c534e7b75703e244a87b7c396d075c9a409779.zip chromium_src-d3c534e7b75703e244a87b7c396d075c9a409779.tar.gz chromium_src-d3c534e7b75703e244a87b7c396d075c9a409779.tar.bz2 |
GTTF: Detect browser crashes on shutdown in UI tests.
Previously the automation framework could miss a browser
crash during shutdown on POSIX (on Windows there is
crash_service.exe that should catch all crashes).
This change makes the automation framework avoid losing
information about the browser process' exit status
(CrashAwareSleep), and fixes a bug in base::WaitForExitCodeWithTimeout
(which on POSIX never reported the process has been signaled).
Finally, it makes the automation framework use WaitForExitCodeWithTimeout
instead of WaitForSingleProcess. This way we can get the exit status
information in an accurate and cross-platform way.
To avoid trying to close the same process handle twice (it's only an issue on Windows) I've changed WaitForExitCodeWithTimeout not to close the passed handle. It's only used in few places and I think this CL fixes all of them.
I've tested this change locally on Mac with a UI test that SIGKILLs the browser.
Before this change the test passed (it shouldn't), and after this change
the test failed with an information that the browser has not exited cleanly.
BUG=56644
Review URL: http://codereview.chromium.org/6689014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80472 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/process_util_win.cc')
-rw-r--r-- | base/process_util_win.cc | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/base/process_util_win.cc b/base/process_util_win.cc index 895ec3b..8ade06e 100644 --- a/base/process_util_win.cc +++ b/base/process_util_win.cc @@ -464,8 +464,7 @@ TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code) { bool WaitForExitCode(ProcessHandle handle, int* exit_code) { bool success = WaitForExitCodeWithTimeout(handle, exit_code, INFINITE); - if (!success) - CloseProcessHandle(handle); + CloseProcessHandle(handle); return success; } @@ -477,10 +476,6 @@ bool WaitForExitCodeWithTimeout(ProcessHandle handle, int* exit_code, if (!::GetExitCodeProcess(handle, &temp_code)) return false; - // Only close the handle on success, to give the caller a chance to forcefully - // terminate the process if he wants to. - CloseProcessHandle(handle); - *exit_code = temp_code; return true; } @@ -544,11 +539,6 @@ bool WaitForSingleProcess(ProcessHandle handle, int64 wait_milliseconds) { return retval; } -bool CrashAwareSleep(ProcessHandle handle, int64 wait_milliseconds) { - bool retval = WaitForSingleObject(handle, wait_milliseconds) == WAIT_TIMEOUT; - return retval; -} - bool CleanupProcesses(const std::wstring& executable_name, int64 wait_milliseconds, int exit_code, |