summaryrefslogtreecommitdiffstats
path: root/chrome/app/breakpad_mac.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove the rest of #pragma once in one big CL.ajwong@chromium.org2012-07-111-1/+0
| | | | | | | | | For context see this thread: https://groups.google.com/a/chromium.org/forum/?fromgroups#!topic/chromium-dev/RMcVNGjB4II TBR=thakis,pkasting,jam git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146163 0039d316-1c4b-4281-b951-d872f2087c98
* Update Breakpad to r842, picking up:mark@chromium.org2011-10-031-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r842 | mark@chromium.org | 2011-10-03 15:54:28 -0400 (Mon, 03 Oct 2011) | 11 lines Use a bootstrap subset port for the inspector, tying the subset to the lifetime of the task to be monitored, the invoking task. This allows the bootstrap server (in launchd) to automatically clean up the Mach server registration when the task being monitored exits, avoiding leaks of com.Breakpad.Inspector(pid) ports in "launchctl bslist". BUG=chromium:28547 TEST=Handler should still crash catches, but inspector ports should no longer show up in "launchctl bslist". They should show up under a subset port in "launchctl bstree" instead. "launchctl bstree" must be invoked as root. Review URL: http://breakpad.appspot.com/306001 ------------------------------------------------------------------------ This gives each Breakpad instance its own bootstrap subset port as a subset of the process' bootstrap port, and places the Breakpad inspector port into the bootstrap subset port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Breakpad rather than Chrome because a mechanism to fix it without changing the process' bootstrap port was discovered. It was determined that the rohitfork port is already immune to leaks of the sort that the Breakpad inspector port experiences. A previous attempt to fix this bug was r103089, but that caused bug 98550. This strategy is safer. The forked Breakpad module.cc is updated to match upstream r835, which allows the unforking of the CFI-disabling code. A new CFI-disabling "-c" option to dump_syms is now available and used by the dump_product_syms script. BUG=28547 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for each process as a child of the per-user/per-session bootstrap namespace if crash reporting is on. One com.Breakpad.Inspector port should show up as a child of each bootstrap subset. As each process exits (even if mercilessly killed by "kill -9"), the associated subsets and inspector ports should disappear. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Note that this version of the change does not change the handling of rohitfork ports at all, but this test case was useful in a previous version of this patch. 5. Test case from bug 98550: Have a link in a web browser window (in a different browser) and drag it into Chrome. Expect the drag operation to operate properly in both the tab strip and in web content. See bug 98550 for details. 6. Unreported test case that failed in r103089: browser relaunch should work. Visit chrome://flags, change some flags to get the "Relaunch Now" button at the bottom (you can put the flags back to how you found them initially), and click "Relaunch Now". The browser should close and then be relaunched. Review URL: http://codereview.chromium.org/8120007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103778 0039d316-1c4b-4281-b951-d872f2087c98
* Back out trunk r103089 because it caused bug 98550.mark@chromium.org2011-09-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Give each process its own bootstrap subset port as a subset of its inherited bootstrap port, and use the bootstrap subset port as the bootstrap port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Chrome rather than Breakpad to account for the potential leak of rohitfork ports if the browser process crashes or is mercilessly killed, because library code messing with the task's bootstrap port doesn't strike me as kosher, and because the Mac Breakpad code is scheduled to be replaced with something better that doesn't attempt to leak ports like a sieve within a couple of months anyway. BUG=28547, 98550 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) or com.google.Chrome.rohitfork, com.google.Chrome.canary.rohitfork, or org.chromium.Chromium.rohitfork ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for the browser process as a child of the per-user/per-session bootstrap namespace containing the rohitfork port and browser's Breakpad port if crash reporting is on. There should also be a bootstrap subset for each child process as a child of the browser's bootstrap subset. If crash reporting is on, each child process' bootstrap subset should contain a Breakpad port. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Review URL: http://codereview.chromium.org/8059041 TBR=mark@chromium.org Review URL: http://codereview.chromium.org/8086003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103303 0039d316-1c4b-4281-b951-d872f2087c98
* Give each process its own bootstrap subset port as a subset of its inheritedmark@chromium.org2011-09-281-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bootstrap port, and use the bootstrap subset port as the bootstrap port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Chrome rather than Breakpad to account for the potential leak of rohitfork ports if the browser process crashes or is mercilessly killed, because library code messing with the task's bootstrap port doesn't strike me as kosher, and because the Mac Breakpad code is scheduled to be replaced with something better that doesn't attempt to leak ports like a sieve within a couple of months anyway. BUG=28547 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) or com.google.Chrome.rohitfork, com.google.Chrome.canary.rohitfork, or org.chromium.Chromium.rohitfork ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for the browser process as a child of the per-user/per-session bootstrap namespace containing the rohitfork port and browser's Breakpad port if crash reporting is on. There should also be a bootstrap subset for each child process as a child of the browser's bootstrap subset. If crash reporting is on, each child process' bootstrap subset should contain a Breakpad port. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Review URL: http://codereview.chromium.org/8059041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103089 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor Mac crash key reporting - move to base/mac/crash_logging.{h,mm}jeremy@chromium.org2011-09-111-25/+1
| | | | | | | | | | | | | | | | Breakpad support currently resides in chrome/app/breakpad_mac.* this makes it inaccessible to lower level code that would also like to set crash keys e.g. The sandboxing infrastructure. This CL refactors the crash key reporting code to reside in base/mac. Logging is also added to the Sandbox code to try to track down the cause of crbug.com/94758. BUG=95272, 94758 TEST=On official builds crash logs should contain crash keys e.g. OS version. Review URL: http://codereview.chromium.org/7849011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100626 0039d316-1c4b-4281-b951-d872f2087c98
* [Mac] Breakpad key to help track web-drag crash.shess@chromium.org2011-04-191-0/+11
| | | | | | | | | | | BUG=78782 TEST=Monitor crashes. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=81855 Review URL: http://codereview.chromium.org/6861004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82065 0039d316-1c4b-4281-b951-d872f2087c98
* `#pragma once` for app, base, chrome, gfx, ipc, net, skia, viewsthakis@chromium.org2010-07-261-0/+1
| | | | | | | | | BUG=50273 TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux TBR: erg git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
* Change when we enable Apple's Crash reporter.jeremy@chromium.org2009-08-311-2/+2
| | | | | | | | | | | | | | | | | | | | Enable Apple Crash Reporter for Browser process in Non-Debug builds. * Introduce mac_util::IsBackgroundProcess(). * Invert logic around Breakpad Enabling/Disabling to make it clearer. * Honor the kDisableBreakpad switch. Our new policy: * Breakpad is enabled/disabled based on the user stats reporting opt-in flag - this hasn't changed. * Always disable Apple Crash in background processes (plug-in, renderer, etc). * If Breakpad is enabled browser crashes will be passed to Crash Reporter. * If Breakpad is NOT enabled browser [or any other foreground app] crashes will be passed to Crash Reporter in Release builds. Effectively this means that we now enable Crash Reporter for the browser process in Chromium release builds so these will no longer crash silently with no trace. Review URL: http://codereview.chromium.org/180048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24959 0039d316-1c4b-4281-b951-d872f2087c98
* Change breakpads on the helper processes to keep our rimZ clean.mark@chromium.org2009-08-151-5/+1
| | | | | | | | | | | | | | | | | | | | | 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
* Try to fix broken treejrg@chromium.org2009-07-081-0/+4
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20197 0039d316-1c4b-4281-b951-d872f2087c98
* 1)When we enabled breakpad on first run we weren't correctly setting the ↵jeremy@chromium.org2009-05-221-2/+2
| | | | | | | | | | | process type. 2)Fixed another logic inversion in SetActiveRendererURL. 3)Change IsCrashReporterEnabled-> IsCrashReporterDisabled to prevent future confusion since that was the question all the callers where askign anyway. Review URL: http://codereview.chromium.org/113737 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16707 0039d316-1c4b-4281-b951-d872f2087c98
* Last chunk of OS X Breakpad integration:jeremy@chromium.org2009-04-221-0/+5
| | | | | | | | | | * Link agasint Breakpad from public svn repo. * Bump DEPS to new svn rev of Breakpad with fixes for 10.5 compilation. * Fill in code to differentiate between processes types in crash report. Review URL: http://codereview.chromium.org/88043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14245 0039d316-1c4b-4281-b951-d872f2087c98
* * Breakpad on OSX now works with stock Breakpad framwork.jeremy@chromium.org2009-03-301-0/+13
| | | | | | | | | | * We now add all the same Metadata on OS X as we do on Windows. * Made the code for logging URLs in crash dumps a little more x-platform. Remove custom Breakpad hacks so we can use an unmodified version of the Framework. Review URL: http://codereview.chromium.org/55028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12811 0039d316-1c4b-4281-b951-d872f2087c98
* First stab at Mac breakpad support.jeremy@chromium.org2009-03-261-0/+19
breakpad_mac.mm still needs some work, there's a bunch of scaffolding in there referring to a custom version of Breakpad I've got going locally. Review URL: http://codereview.chromium.org/53075 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12553 0039d316-1c4b-4281-b951-d872f2087c98