Write a crash monitor program to handle annotations and minidump writing
Categories
(Toolkit :: Crash Reporting, task)
Tracking
()
People
(Reporter: gsvelto, Assigned: gsvelto)
References
(Blocks 13 open bugs)
Details
Attachments
(1 file, 1 obsolete file)
We should write a stand-alone program that can be launched by Firefox that will receive and gather crash annotations for the various processes and write out minidumps when requested to.
The program will have to communicate with Firefox over simple IPC. It will be able to accept a limited list of commands which will include:
- Establishing an IPC channel with newly created processes
- Writing out the minidump of a crashed process
- Writing out the minidump of a running process
- Writing out the crash annotations (.extra file) of a given process
- Launching the crash reporter client if the main process crashes
Comment 1•4 years ago
|
||
Tentatively tracking this bug for Fission because this crash monitor may be the solution for bug 1594529 (which is blocking WebGL remoting for Fission).
Comment 2•4 years ago
|
||
(In reply to Chris Peterson [:cpeterson] from comment #1)
Tentatively tracking this bug for Fission because this crash monitor may be the solution for bug 1594529 (which is blocking WebGL remoting for Fission).
Correction: Untracking for Fission. Gabriele says this crash monitor will be a big change and he recommends that we not block Fission waiting for it.
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 3•7 months ago
|
||
Assignee | ||
Comment 4•7 months ago
|
||
Assignee | ||
Comment 5•7 months ago
|
||
A few words about the WIP here. This covers the basic structure of the OOP crash reporter, which includes:
- One executable (crashmonitor) which contains the logic required from generating full crash reports, this will be used on Linux, macOS and Windows (currently only Linux is supported and it's a bit hacky)
- A shared library with JNI methods for use on Android which contains the same logic as the executable
- An Android service implemented in Java which loads said shared library. I've chosen a service here instead of using a regular class (or even an executable-like library like Crashpad does) because it allows the service to be killed and restarted, and the restarts can happen on demand. This will be very handy in case we hit a crash while the service has been killed
- A bunch of changes that move all the logic used to fetch crash annotations from the main process into the crashmonitor process (or Android service). This includes a bunch of changes which rip out the related Rust/C++ glue, greatly simplifying the resulting code
There's quite a few things missing:
- A client crate to access the functionality of the crash monitor. I've got a WIP of this too but it's even cruder than the rest of the code. This will implement an IPC channel to request minidumps and retrieve the results. It will also run in parallel with Breakpad's own IPC mechanism, that will only be replaced once we deal with bug 1620990 at a later point
- The logic to actually fetch the minidumps from the external process and insert them in the regular crash reporting flow
- Windows & macOS implementations
Updated•7 months ago
|
Updated•6 months ago
|
Description
•