0

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
This commit is contained in:
cpu@google.com
2008-11-03 23:28:06 +00:00
parent 5f8cbd5751
commit eef576fd62
3 changed files with 18 additions and 7 deletions

@ -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);

@ -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.

@ -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).
};