diff options
author | cpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-03 23:28:06 +0000 |
---|---|---|
committer | cpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-03 23:28:06 +0000 |
commit | eef576fd62fc6be5a23e276353f8cbae217d87ff (patch) | |
tree | 5f492cf31ca5774a1a994c6308b4b520f87e3423 | |
parent | 5f8cbd5751a4d2ef52974fa4b4f7ab9943db07d1 (diff) | |
download | chromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.zip chromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.tar.gz chromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.tar.bz2 |
Remove fragile check in DidProcessCrash
- the numbers were out of sync with result_codes.h
- can't use result_codes.h in base project so I extracted
the generic part of it.
Rahul: I hope I don't break installer assumptions here.
Dan: don't feel obligated to review.
Review URL: http://codereview.chromium.org/9012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4519 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | base/process_util.h | 11 | ||||
-rw-r--r-- | base/process_util_win.cc | 7 | ||||
-rw-r--r-- | chrome/app/result_codes.h | 7 |
3 files changed, 18 insertions, 7 deletions
diff --git a/base/process_util.h b/base/process_util.h index 50a5626..3f777a6 100644 --- a/base/process_util.h +++ b/base/process_util.h @@ -46,13 +46,22 @@ struct IoCounters { namespace process_util { +// A minimalistic but hopefully cross-platform set of exit codes. +// Do not change the enumeration values or you will break third-party +// installers. +enum { + PROCESS_END_NORMAL_TERMINATON = 0, + PROCESS_END_KILLED_BY_USER = 1, + PROCESS_END_PROCESS_WAS_HUNG = 2 +}; + // Returns the id of the current process. int GetCurrentProcId(); // Returns the ProcessHandle of the current process. ProcessHandle GetCurrentProcessHandle(); -// Returns the unique ID for the specified process. This is functionally the +// Returns the unique ID for the specified process. This is functionally the // same as Windows' GetProcessId(), but works on versions of Windows before // Win XP SP1 as well. int GetProcId(ProcessHandle process); diff --git a/base/process_util_win.cc b/base/process_util_win.cc index b13cbea..df485f4 100644 --- a/base/process_util_win.cc +++ b/base/process_util_win.cc @@ -187,10 +187,9 @@ bool DidProcessCrash(ProcessHandle handle) { // Warning, this is not generic code; it heavily depends on the way // the rest of the code kills a process. - if (exitcode == 0 || // Normal termination. - exitcode == 1 || // Killed by task manager. - exitcode == 14 || // Killed because of a bad message. - exitcode == 16 || // Killed by hung detector (see ResultCodes) + if (exitcode == PROCESS_END_NORMAL_TERMINATON || + exitcode == PROCESS_END_KILLED_BY_USER || + exitcode == PROCESS_END_PROCESS_WAS_HUNG || exitcode == 0xC0000354 || // STATUS_DEBUGGER_INACTIVE. exitcode == 0xC000013A || // Control-C/end session. exitcode == 0x40010004) { // Debugger terminated process/end session. diff --git a/chrome/app/result_codes.h b/chrome/app/result_codes.h index e03a8bc..4acad55 100644 --- a/chrome/app/result_codes.h +++ b/chrome/app/result_codes.h @@ -5,6 +5,8 @@ #ifndef CHROME_APP_RESULT_CODES_H__ #define CHROME_APP_RESULT_CODES_H__ +#include "base/process_util.h" + // This file consolidates all the return codes for the browser and renderer // process. The return code is the value that: // a) is returned by main() or winmain(), or @@ -18,7 +20,9 @@ class ResultCodes { public: enum ExitCode { - NORMAL_EXIT = 0, // Normal termination. Keep it *always* zero. + NORMAL_EXIT = process_util::PROCESS_END_NORMAL_TERMINATON, + TASKMAN_KILL = process_util::PROCESS_END_KILLED_BY_USER, + HUNG = process_util::PROCESS_END_PROCESS_WAS_HUNG, INVALID_CMDLINE_URL, // An invalid command line url was given. SBOX_INIT_FAILED, // The sandbox could not be initialized. GOOGLE_UPDATE_INIT_FAILED, // The Google Update client stub init failed. @@ -35,7 +39,6 @@ class ResultCodes { UNSUPPORTED_PARAM, // Command line parameter is not supported. KILLED_BAD_MESSAGE, // A bad message caused the process termination. IMPORTER_CANCEL, // The user canceled the browser import. - HUNG, // Browser was hung and killed. IMPORTER_HUNG, // Browser import hung and was killed. EXIT_LAST_CODE // Last return code (keep it last). }; |