mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 875562 - Fill in some details in the crashreporter docs, r=gps
This commit is contained in:
parent
32454c9cf5
commit
43aa05ed91
@ -32,8 +32,8 @@ Crash Reporter Client
|
|||||||
to handle dump files. This application optionally submits crashes to
|
to handle dump files. This application optionally submits crashes to
|
||||||
Mozilla (or the configured server).
|
Mozilla (or the configured server).
|
||||||
|
|
||||||
How Crash Handling Works
|
How Main-Process Crash Handling Works
|
||||||
========================
|
=====================================
|
||||||
|
|
||||||
The crash handler is hooked up very early in the Gecko process lifetime.
|
The crash handler is hooked up very early in the Gecko process lifetime.
|
||||||
It all starts in ``XREMain::XRE_mainInit()`` from ``nsAppRunner.cpp``.
|
It all starts in ``XREMain::XRE_mainInit()`` from ``nsAppRunner.cpp``.
|
||||||
@ -99,17 +99,65 @@ removed from the *pending* directory and a file containing the
|
|||||||
crash ID from the remote server for the submitted dump is created in the
|
crash ID from the remote server for the submitted dump is created in the
|
||||||
*submitted* directory.
|
*submitted* directory.
|
||||||
|
|
||||||
|
If the user chooses not to submit a dump in the crash reporter UI, the dump
|
||||||
|
files are deleted.
|
||||||
|
|
||||||
And that's pretty much what happens when a crash/dump is written!
|
And that's pretty much what happens when a crash/dump is written!
|
||||||
|
|
||||||
Plugin and Child Process Crashes
|
Plugin and Child Process Crashes
|
||||||
--------------------------------
|
================================
|
||||||
|
|
||||||
Crashes in plugin and child processes are also managed by the crash
|
Crashes in plugin and child processes are also managed by the crash
|
||||||
reporting subsystem.
|
reporting subsystem.
|
||||||
|
|
||||||
Child process crashes are handled by the ``mozilla::dom::CrashReporterParent``
|
Child process crashes are handled by the ``mozilla::dom::CrashReporterParent``
|
||||||
class defined in ``dom/ipc``. Their submission is handled in process by the
|
class defined in ``dom/ipc``. When a child process crashes, the toplevel IPDL
|
||||||
``CrashSubmit.jsm`` file in ``toolkit/crashreporter``.
|
actor should check for it by calling TakeMinidump in its ``ActorDestroy``
|
||||||
|
Method: see ``mozilla::plugins::PluginModuleParent::ActorDestroy`` and
|
||||||
|
``mozilla::plugins::PluginModuleParent::ProcessFirstMinidump``. That method
|
||||||
|
is responsible for calling
|
||||||
|
``mozilla::dom::CrashReporterParent::GenerateCrashReportForMinidump`` with
|
||||||
|
appropriate crash annotations specific to the crash. All child-process
|
||||||
|
crashes are annotated with a ``ProcessType`` annotation, such as "content" or
|
||||||
|
"plugin".
|
||||||
|
|
||||||
|
Submission of child process crashes is handled by application code. This
|
||||||
|
code prompts the user to submit crashes in context-appropriate UI and then
|
||||||
|
submits the crashes using ``CrashSubmit.jsm``.
|
||||||
|
|
||||||
|
Flash Process Crashes
|
||||||
|
=====================
|
||||||
|
|
||||||
|
On Windows Vista+, the Adobe Flash plugin creates two extra processes in its
|
||||||
|
Firefox plugin to implement OS-level sandboxing. In order to catch crashes in
|
||||||
|
these processes, Firefox injects a crash report handler into the process using the code at ``InjectCrashReporter.cpp``. When these crashes occur, the
|
||||||
|
ProcessType=plugin annotation is present, and an additional annotation
|
||||||
|
FlashProcessDump has the value "Sandbox" or "Broker".
|
||||||
|
|
||||||
|
Plugin Hangs
|
||||||
|
============
|
||||||
|
|
||||||
|
Plugin hangs are handled as crash reports. If a plugin doesn't respond to an
|
||||||
|
IPC message after 60 seconds, the plugin IPC code will take minidumps of all
|
||||||
|
of the processes involved and then kill the plugin.
|
||||||
|
|
||||||
|
In this case, there will be only one .ini file with the crash report metadata,
|
||||||
|
but there will be multiple dump files: at least one for the browser process and
|
||||||
|
one for the plugin process, and perhaps also additional dumps for the Flash
|
||||||
|
sandbox and broker processes. All of these files are submitted together as a
|
||||||
|
unit. Before submission, the filenames of the files are linked:
|
||||||
|
|
||||||
|
- **uuid.ini** - *annotations, includes an additional_minidumps field*
|
||||||
|
- **uuid.dmp** - *plugin process dump file*
|
||||||
|
- **uuid-<other>.dmp** - *other process dump file as listed in additional_minidumps*
|
||||||
|
|
||||||
|
Browser Hangs
|
||||||
|
=============
|
||||||
|
|
||||||
|
There is a feature of Firefox that will crash Firefox if it stops processing
|
||||||
|
messages after a certain period of time. This feature doesn't work well and is
|
||||||
|
disabled by default. See ``xpcom/threads/HangMonitor.cpp``. Hang crashes
|
||||||
|
are annotated with ``Hang=1``.
|
||||||
|
|
||||||
about:crashes
|
about:crashes
|
||||||
=============
|
=============
|
||||||
|
Loading…
Reference in New Issue
Block a user