1. 03 Dec, 2018 1 commit
    • Joshua Peraza's avatar
      Enable Crashpad for Android · 66b2e0f1
      Joshua Peraza authored
      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().
      
      Bug: crashpad:30
      Cq-Include-Trybots: master.tryserver.chromium.android:android_compile_x64_dbg;master.tryserver.chromium.android:android_compile_x86_dbg
      Change-Id: I0efa451585f60287853c47f860f09ced581c8958
      Reviewed-on: https://chromium-review.googlesource.com/c/989401
      Commit-Queue: Joshua Peraza <jperaza@chromium.org>
      Reviewed-by: default avatarTobias Sargeant <tobiasjs@chromium.org>
      Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
      Reviewed-by: default avatarPeter Wen <wnwen@chromium.org>
      Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
      Reviewed-by: default avatarSimeon Anfinrud <sanfin@chromium.org>
      Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
      Reviewed-by: default avatarMark Mentovai <mark@chromium.org>
      Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
      Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#612987}
      66b2e0f1
  2. 02 Dec, 2018 32 commits
  3. 01 Dec, 2018 7 commits