Socorro/SocorroServer/Crash Types

From MozillaWiki
Jump to: navigation, search

Gecko is progressively adding support for out of process crashes in the Electrolysis project.

Out of Process Plugin Crash

An Out of Process Plugin (OOPP) crash is a crash wherby a plugin (such as Adobe Flash) that is running in its own process outside of the browser's master process has crashed. The browser displays a notice that the plugin has crashed, but the browser remains unaffected.

Hung Processes

A special case of an OOPP is a hung OOPP, where the process isn't responding. In this case Breakpad will generate a hangid and two crash reports. Crash reports will have a hangid that is non-null. There will typically be a pair of crash reports with the same hangid.

  • Browser hang - the controlling processes
  • OOPP hang - the plugin that crashed

The browser displays a notice that the process has stopped responding, but the browser otherwise remains unaffected. The browser hang is for context and doesn't mean it crashed completely.


It's possible for there to be more than two crashes with the same hangid, if crashes are resubmitted.

Future Process Types

In the future, the types OOP hangs may include be OOPC (Content), OOPJ (Jetpack), etc.

Traditional Crashes

Traditional crashes are either:

  • Pre-Electrolysis
  • Non OOPP Crash (master process such as Firefox crash)
  • OOPP which responded to the kill signal

These crashes will have a NULL hangid in the reports table.


In [[Socorro/SocorroUI/Advanced_Search|Advanced Search], you may filter search to find:

  • Crashes only (Traditional, OOPP)
  • Hangs only (Browser, OOPP)
  • And you can refine the search with Process Details
    • OOPP name
    • filename

OOPP Support

The reports table is joined with the reports_plugins table and plugins table for capturing metadata such as plugin name, filename, and version.

Planned Enhancements

Bug#535829 has a sketch of the next step for database support for OOPC and OOPJ.

Basically we'd have a crash_processes table with a type code (P - plugins, C - content, J - Jetpcack, etc) and then any new details tables that match the reports_plugins pattern.

Development/Testing Notes

  • Be sure to change the hangid in your raw json before submitting crashes
  • Something helpful that you'll find buried in PHP documentation is this, which depicts ways to query/identify each type of browser/plugin crash/hang.

            | ANY Report Type   | CRASH                | OOPP HANG
ANY PROCESS | hang=Any proc=Any | hangid=null proc=Any | hangid=123 Proc=Any
    BROWSER | hang=Any proc=Bro | hangid=null proc=Bro | hangid=123 Proc=Bro
    PLUG-IN | hang=Any proc=Plu | hangid=null proc=Plu | hangid=123 Proc=Plu


A few icons are used on the Advanced Search and Top Crasher pages, most notably:

[File:application16x16.png] - Browser Hang [File:brick16x16.png] - Plugin (Plugin Crash or Plugin Hang) [File:stop16x16.png] - Hang (Plugin Hang or Browser Hang)