1*9712c20fSFrederick Mayle# Breakpad Crash Reporting for Mozilla 2*9712c20fSFrederick Mayle 3*9712c20fSFrederick Mayle* January 24, 2007 4*9712c20fSFrederick Mayle * Links updated February 14, 2007 5*9712c20fSFrederick Mayle* Mozilla HQ 6*9712c20fSFrederick Mayle* Mark Mentovai 7*9712c20fSFrederick Mayle* Brian Ryner 8*9712c20fSFrederick Mayle 9*9712c20fSFrederick Mayle## What is a crash reporter? 10*9712c20fSFrederick Mayle 11*9712c20fSFrederick Mayle* Enables developers to analyze crashes that occur in the wild 12*9712c20fSFrederick Mayle* Produces stack backtraces that help identify how a program failed 13*9712c20fSFrederick Mayle* Offers higher-level data aggregation (topcrashes, MTBF statistics) 14*9712c20fSFrederick Mayle 15*9712c20fSFrederick Mayle## Motivation 16*9712c20fSFrederick Mayle 17*9712c20fSFrederick Mayle* Talkback is proprietary and unmaintained 18*9712c20fSFrederick Mayle* Smaller open-source projects have few options 19*9712c20fSFrederick Mayle* Larger projects need flexibility and scalability 20*9712c20fSFrederick Mayle 21*9712c20fSFrederick Mayle## Design Options 22*9712c20fSFrederick Mayle 23*9712c20fSFrederick Mayle* Stackwalking done on client 24*9712c20fSFrederick Mayle * Apple CrashReporter 25*9712c20fSFrederick Mayle * GNOME BugBuddy 26*9712c20fSFrederick Mayle* Client sends memory dump 27*9712c20fSFrederick Mayle * Talkback 28*9712c20fSFrederick Mayle * Windows Error Reporting 29*9712c20fSFrederick Mayle * Breakpad 30*9712c20fSFrederick Mayle 31*9712c20fSFrederick Mayle## Goals 32*9712c20fSFrederick Mayle 33*9712c20fSFrederick Mayle* Provide libraries around which systems can be based 34*9712c20fSFrederick Mayle* Open-source 35*9712c20fSFrederick Mayle* Cross-platform 36*9712c20fSFrederick Mayle * Mac OS X x86, PowerPC 37*9712c20fSFrederick Mayle * Linux x86 38*9712c20fSFrederick Mayle * Windows x86 39*9712c20fSFrederick Mayle* No requirement to distribute symbols 40*9712c20fSFrederick Mayle 41*9712c20fSFrederick Mayle## Client Libraries 42*9712c20fSFrederick Mayle 43*9712c20fSFrederick Mayle* Exception handler installed at application startup 44*9712c20fSFrederick Mayle * Spawns a separate thread 45*9712c20fSFrederick Mayle* Minidump file written at crash time 46*9712c20fSFrederick Mayle * Format used by Windows debuggers 47*9712c20fSFrederick Mayle* Separate application invoked to send 48*9712c20fSFrederick Mayle * HTTP[S](S.md) POST, can include additional parameters 49*9712c20fSFrederick Mayle 50*9712c20fSFrederick Mayle## Symbols 51*9712c20fSFrederick Mayle 52*9712c20fSFrederick Mayle* Cross-platform symbol file format 53*9712c20fSFrederick Mayle* Contents 54*9712c20fSFrederick Mayle * Function names 55*9712c20fSFrederick Mayle * Source file names and line numbers 56*9712c20fSFrederick Mayle * Windows: Frame pointer omission data 57*9712c20fSFrederick Mayle * Future: parameters and local variables 58*9712c20fSFrederick Mayle* Symbol conversion methods 59*9712c20fSFrederick Mayle 60*9712c20fSFrederick Mayle## Processor 61*9712c20fSFrederick Mayle 62*9712c20fSFrederick Mayle* Examines minidump file and invokes stackwalker 63*9712c20fSFrederick Mayle* Symbol files requested from a SymbolSupplier 64*9712c20fSFrederick Mayle* Produces stack trace 65*9712c20fSFrederick Mayle* Output may be placed where convenient 66*9712c20fSFrederick Mayle 67*9712c20fSFrederick Mayle## Intergation 68*9712c20fSFrederick Mayle 69*9712c20fSFrederick Mayle* Breakpad client present in Gran Paradiso Alpha 1 for Windows 70*9712c20fSFrederick Mayle * Disabled by default 71*9712c20fSFrederick Mayle * Enable with `MOZ_AIRBAG` 72*9712c20fSFrederick Mayle* Proof-of-concept collector 73*9712c20fSFrederick Mayle * http://mavra.perilith.com/~luser/airbag-collector/list.pl 74*9712c20fSFrederick Mayle* Other platforms coming soon 75*9712c20fSFrederick Mayle 76*9712c20fSFrederick Mayle## More Information 77*9712c20fSFrederick Mayle 78*9712c20fSFrederick Mayle* Project home: https://chromium.googlesource.com/breakpad/breakpad 79*9712c20fSFrederick Mayle* Mailing lists 80*9712c20fSFrederick Mayle * [[email protected]](http://groups.google.com/group/google-breakpad-dev/) 81*9712c20fSFrederick Mayle * [[email protected]](http://groups.google.com/group/google-breakpad-discuss/) 82*9712c20fSFrederick Mayle* Ask me (irc.mozilla.org: mento) 83