Crash reporting overhaul: Difference between revisions

Jump to navigation Jump to search
Added information about the minidump-analyzer project
(Added information on the minidump_stackwalker project, fixed a few typos and added new project entries)
(Added information about the minidump-analyzer project)
Line 18: Line 18:


== minidump-analyzer ==
== minidump-analyzer ==
Status: not started<br>
Developer(s):
Source code: https://github.com/luser/rust-minidump/<br>
Original source code:<br>
* https://chromium.googlesource.com/breakpad/breakpad/
* https://hg.mozilla.org/mozilla-central/file/6f0a8dddad51/toolkit/crashreporter/minidump-analyzer
Bugs:<br>
* {{bug|1743983}}
=== Description ===
The minidump-analyzer tool is similar to the [[#minidump_stackwalker]] in that
it processes minidumps and emits stack traces in Socorro-compatible JSON
format. The main differences between the tools are that minidump-analyzer runs
on client machines rather than on our servers, it uses native debug information
where possible to unwind stacks instead of Breakpad symbol files and it doesn't
symbolicate its output. minidump-analyzer is run on a client machine for every
crash that generated a valid minidump and its output is used to populate the
contents of the
[https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/data/crash-ping.html crash ping].
=== Rationale ===
The minidump-analyzer suffers from many of the same problems as the
[[#minidump_stackwalker]] with regards to stability, maintenance burden and
lack of automated testing. It is yet another Breakpad-based stack walker that
produces slightly different results than the others. Additionally support for
using native unwinding information was never fully implemented. We only ever
implemented support for the Windows x86-64 platform and we would have to
implement support for other platforms from scratch in order to make it fully
functional.
We'd like to replace this tool with one which re-uses the same code as
Socorro's [[#minidump_stackwalker]] in order to reduce maintenance and keep
results consistent between Socorro and crash telemetry. Additionally we'd like
to add support for all missing platforms (Linux and macOS, as well as
Windows/AArch64).
=== Plan ===
We plan on reusing the stackwalker developed as part of the
[[#minidump_stackwalker]] project using Sentry's
[https://github.com/getsentry/symbolic symbolic] crate to parse the native
debug information. This will require a few changes to the
[https://github.com/luser/rust-minidump rust-minidump] crate:
* We need to add support for fetching unwinding directives from native debug information via the symbolic crate
* We need to add machinery to find the appropriate files on the client machine instead of fetching them from a symbol server
* We don't need to wire up the symbolicator to the native debug information as the stack traces we emit are raw and will be symbolicated later
* We'll have to vendor rust-minidump and its dependencies into mozilla-central
* We'll have to build and package the tool like we do with the existing one
* Finally we should remove Breakpad's processor sources from the build as they won't be needed anymore
Sentry is already working on integrating symbolic with rust-minidump so we're
currently waiting it out. This might require very little work in the end.


= Server-side tools and components =
= Server-side tools and components =
Line 228: Line 283:


== Telemetry-based dashboards ==
== Telemetry-based dashboards ==
=== Overview ===
Status: not started<br>
Developer(s):
Source code:
Original source code:<br>
* https://mathies.com/mozilla/crashes/
=== Description ===
=== Rationale ===
=== Plan ===
Confirmed users
424

edits

Navigation menu