From Fedora Project Wiki
Line 7: Line 7:
http://fedoraproject.org/wiki/Packaging/Debuginfo and http://fedoraproject.org/wiki/StackTraces
http://fedoraproject.org/wiki/Packaging/Debuginfo and http://fedoraproject.org/wiki/StackTraces


What we want is a system that gets information about the crash to developers in a form with complete stack trace data.  There are several
What we want is a system that gets information about the crash to developers in a form with complete stack trace data.
options for this.  First, the Apport system developed by Ubuntu.  See the old [[Features/Apport]] feature page.
 
[http://www.redhat.com/archives/rhl-devel-list/2008-June/msg01250.html A discussion] on fedora-devel-list came to the conclusion that the Apport system as designed won't work for Fedora because it sends the complete core dump over the network.
 
Another option (currently used by GNOME upstream) is [http://code.google.com/p/google-breakpad/ Breakpad] and [http://code.google.com/p/socorro/ Socorro].


The plan has two parts:
The plan has two parts:
Line 18: Line 13:
=== Client ===
=== Client ===
* Create a program to catch crashing programs and write out a crash report / stack trace
* Create a program to catch crashing programs and write out a crash report / stack trace
** Doable using the kernel's core pattern, and inotify
** This should be able to produce Breakpad reports, among other output formats
** This should be able to produce Breakpad reports, among other output formats
** Check using rpm & yum metadata whether the crashed program actually comes from Fedora code & repositories
** Check using rpm & yum metadata whether the crashed program actually comes from Fedora code & repositories
Line 24: Line 20:
** Ignore further crashes of that program
** Ignore further crashes of that program
** Ignore all further crashes
** Ignore all further crashes
* Have a command line interface/preference for all of this


=== Server ===
=== Server ===
* Get a Socorro server running in Fedora's infrastructure
* Get a Socorro server running in Fedora's infrastructure
* Point the default breakpad configuration to it (easy)
* Point the default breakpad configuration to it (easy)
=== Extra ===
* Run a separate kerneloops server?
=== Open questions ===
* Do symbol resolution on the client or the server?
* How to do symbol resolution? FUSE? littlebottom?
=== Comments ===
* Why not use breakpad?
** We don't want LD_PRELOAD everywhere.


== Owner ==
== Owner ==

Revision as of 16:28, 21 November 2008

Handling program crashes in Fedora

Summary

As of about Fedora 6, packages no longer include the "debuginfo" data necessary for local crash handlers to get a useful stack trace. See: http://fedoraproject.org/wiki/Packaging/Debuginfo and http://fedoraproject.org/wiki/StackTraces

What we want is a system that gets information about the crash to developers in a form with complete stack trace data.

The plan has two parts:

Client

  • Create a program to catch crashing programs and write out a crash report / stack trace
    • Doable using the kernel's core pattern, and inotify
    • This should be able to produce Breakpad reports, among other output formats
    • Check using rpm & yum metadata whether the crashed program actually comes from Fedora code & repositories
  • Notify the user when a program crashes, and allow them to
    • Save the crash data and create a report
    • Ignore further crashes of that program
    • Ignore all further crashes
  • Have a command line interface/preference for all of this

Server

  • Get a Socorro server running in Fedora's infrastructure
  • Point the default breakpad configuration to it (easy)

Extra

  • Run a separate kerneloops server?

Open questions

  • Do symbol resolution on the client or the server?
  • How to do symbol resolution? FUSE? littlebottom?

Comments

  • Why not use breakpad?
    • We don't want LD_PRELOAD everywhere.

Owner

  • Name: [none currently]

Current status

  • Targeted release:
  • Last modified: Template:Void9 June 2008
  • Percent complete: 0%

Usage cases / rationale

  • See summary

Benefit to Fedora

  • See summary

Scope

Requires running a new server in the Fedora infrastructure.

Testing

Cause a program to crash and get a report submitted to Socorro. Test that socorro correctly retraces it and gets enough information for a developer to identify the problem.

Dependencies

  1. Need to package the socorro server

Details

Optional

User Experience

A program crashes. We display a dialog or notification that the program has crashed and save a useful stack trace to a well-known location.

Contingency plan

If this plan fails for some unforseen reason, we can reinvestigate other options such as Apport.

Documentation

None needed.

Release Notes

We will want to explain to developers of Free programs how to find crash dumps.

Comments