Enable Crashpad for Android
Overview:
This CL disables Breakpad for Chrome, Content Shell, WebView, and
Chromecast on Android and replaces it with Crashpad. When a crash
signal is received, the browser forks+execs a Crashpad handler process
either for itself or on behalf of a crashing child to create a crash
dump.
components/crash/
- Remove CrashDumpManager. Minidump creation is handled entirely by
Crashpad.
- Remove OnChildStart from ChildExitObserver as it is no longer
necessary.
- ChildExitObserver observers CrashHandlerHost to be notified when
child processes receive crash signals.
- De-duplicate calls to ChildExitObserver::Client::OnChildExit when
NOTIFICATION_RENDER_PROCESS_{CLOSED, TERMINATED} are both sent.
components/minidump_uploader/
- Uploaders expect crash reports to already be MIME encoded since
Breakpad was doing that in a signal handler call-back.
CrashFileManager now automatically calls into native code to do
the encoding and write to a directory of crash reports whenever it
checks for reports without logcats.
chrome/app/*.{cc,h}
chrome/browser/*.cc
content/shell/app/*.{cc,h}
content/shell/browser/*.cc
- Initialize Crashpad instead of Breakpad, with minor cleanup and
adjustment for changes to CrashDumpObserver.
chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
- Simulate crashes/exits with NOTIFICATION_RENDER_PROCESS_{CREATED,
CLOSED} and signals sent to ChildExitObserver instead of a crash
dump.
android_webview/
- AwBrowserTerminator now observes child process crashes via
ChildExitObserver rather than its own pipe.
- Crashpad always produces minidumps, and not microdumps.
- Disabling Crashpad is not yet supported.
chromecast/
- There are now two directories that crash report uploaders should
be aware of: "Crashpad" contains a database of raw minidumps
produced by Crashpad, and "Crash Reports" contains MIME encoded
minidumps. MIME encoding is performed by a CrashReportMimeWriter
in CastCrashUploader.java:checkForCrashDumps().
TBR=yfriedman@chromium.org,peter@chromium.org,isherman@chromium.org,jam@chromium.org,wnwen@chromium.org,torne@chromium.org,halliwell@chromium.org,tobiasjs@chromium.org,rsesek@chromium.org,sanfin@chromium.org,jperaza@chromium.org,mark@chromium.org
Bug: crashpad:30
Change-Id: Ib1b0fe085272a7e1e4a91462add50e41eecad746
Cq-Include-Trybots: master.tryserver.chromium.android:android_compile_x64_dbg;master.tryserver.chromium.android:android_compile_x86_dbg
Reviewed-on: https://chromium-review.googlesource.com/c/1388654
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619711}Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .