diff options
author | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-15 02:04:21 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-15 02:04:21 +0000 |
commit | 0abe2cbeb51078bf2f14496fac9a1d7a2e21a919 (patch) | |
tree | 17cbd45a663de156b1d1f15f9c3d855a9d2782d5 /chrome/common/child_process_host.cc | |
parent | d0620522264c47074c3602fa8dfb7ad5fbf64e64 (diff) | |
download | chromium_src-0abe2cbeb51078bf2f14496fac9a1d7a2e21a919.zip chromium_src-0abe2cbeb51078bf2f14496fac9a1d7a2e21a919.tar.gz chromium_src-0abe2cbeb51078bf2f14496fac9a1d7a2e21a919.tar.bz2 |
Change breakpads on the helper processes to keep our rimZ clean.
Initialize crash reporting in helper processes such as the renderer process.
Renderer crash reporting stopped working in r23006 when multiple .app bundles
were introduced, because the stats collection and crash reporting preference
is presently accessed via NSUserDefaults, keyed on the bundle ID. The main
browser process and helper processes have distinct bundle IDs. In the new
scheme, only the main browser process consults this preference, and passes it
to helper processes in their command lines.
BUG=19204
TEST=When reporting is enabled, Breakpad should pick up browser and renderer
process crashes;
When reporting is enabled, renderer should not log messages like
[mmdd/hhmmss:WARNING:/path/to/breakpad_mac.mm(47)] Breakpad disabled;
When reporting is disabled, browser and renderer should both log these
messages.
Review URL: http://codereview.chromium.org/165546
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23509 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/child_process_host.cc')
-rw-r--r-- | chrome/common/child_process_host.cc | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/chrome/common/child_process_host.cc b/chrome/common/child_process_host.cc index ca0f972..1fa91f9 100644 --- a/chrome/common/child_process_host.cc +++ b/chrome/common/child_process_host.cc @@ -12,6 +12,7 @@ #include "base/path_service.h" #include "base/process_util.h" #include "base/singleton.h" +#include "base/string_util.h" #include "base/waitable_event.h" #include "chrome/browser/chrome_thread.h" #include "chrome/common/chrome_switches.h" @@ -20,10 +21,23 @@ #include "chrome/common/plugin_messages.h" #include "chrome/common/process_watcher.h" #include "chrome/common/result_codes.h" +#include "chrome/installer/util/google_update_settings.h" #include "ipc/ipc_logging.h" +#if defined(OS_LINUX) +#include "base/linux_util.h" + +// This is defined in chrome/browser/google_update_settings_linux.cc. It's the +// static string containing the user's unique GUID. We send this in the crash +// report. +namespace google_update { +extern std::string linux_guid; +} // namespace google_update +#endif // OS_LINUX + namespace { + typedef std::list<ChildProcessHost*> ChildProcessList; // The NotificationTask is used to notify about plugin process connection/ @@ -49,7 +63,6 @@ class ChildNotificationTask : public Task { } // namespace - ChildProcessHost::ChildProcessHost( ProcessType type, ResourceDispatcherHost* resource_dispatcher_host) : Receiver(type), @@ -130,6 +143,22 @@ std::wstring ChildProcessHost::GetChildPath() { #endif // OS_MACOSX } +// static +void ChildProcessHost::SetCrashReporterCommandLine(CommandLine* command_line) { +#if defined(OS_POSIX) + if (GoogleUpdateSettings::GetCollectStatsConsent()) { +#if defined(OS_LINUX) + command_line->AppendSwitchWithValue(switches::kEnableCrashReporter, + ASCIIToWide(google_update::linux_guid + + "," + + base::GetLinuxDistro())); +#else // !OS_LINUX + command_line->AppendSwitch(switches::kEnableCrashReporter); +#endif // !OS_LINUX + } +#endif // OS_POSIX +} + bool ChildProcessHost::CreateChannel() { channel_id_ = GenerateRandomChannelID(this); channel_.reset(new IPC::Channel( |