From Fedora Project Wiki
m (1 revision(s))
m (Releases/FeatureApport moved to Features/Apport: moving to Features namespace)
(No difference)

Revision as of 22:28, 25 June 2008

Apport for Fedora

Summary

Apport is a set of tools from the Ubuntu project that can:

  • Gather information about crashed processes
  • Hooks into the kernel using /proc/sys/kernel/core_pattern to catch coredumps
  • Does not require extra libraries like bug-buddy, breakpad , etc.
  • Also has hooks for python tracebacks
  • Supports per-package hooks, so (e.g.) crash reports for Xorg can include xorg.conf and Xorg.0.log
  • Report that information to a crash database
  • Retrace the coredump, adding proper debuginfo symbols
  • Notice duplicate crashes and point users to the existing bug report

More information is available on the Ubuntu wiki: Apport and CrashReporting

Owner

  • Name: WillWoods

Current status

  • Targeted release:
  • Last modified: [[Date(2007-07-17T16:06:04Z)]
  • Percent complete: 75%

Usage cases / rationale

  • See summary

Benefit to Fedora

  • See summary

Scope

Testing

Much of the apport code contains unit tests, but here are some short recipes for testing out apport.

Testing the client code (crash handler, reporting GUI)

1. Install apport and apport-gtk apport-qt requires PyQt4, which is not yet available in Fedora. 1. Start the apport service: sudo /sbin/service apport start 1. Enable core dumps by setting the core dump size limit to something reasonable: ulimit -c 100000 This will not be necessary once the kernel is patched to improve core handling. 1. Cause a program to crash, e.g. sleep 5 & sleep 1; kill -SEGV %1 Note that this will not work with most GNOME apps unless you start them with --disable-crash-dialog. Isn't there a env var that disables bug-buddy? We should set this when apport is enabled.. (GNOME_DISABLE_CRASH_DIALOG=1, the GTK_MODULES version will need more care, if >1 module is listed, BastienNocera) 1. Wait a moment for the crash report to appear in /var/crash 1. Edit /etc/apport/crashdb and set default = 'debug' This won't be needed in apport-0.91-0.ww2 and later. 1. Run /usr/share/apport/apport-gtk apportd should be in the next apport package - it will do this for you. 1. Wait while the GUI gathers packaging information. 1. Examine and (optionally) send the crash report.

Testing the server code (apport-retrace, tg-crashdb)

TODO.

Dependencies

1. apport-qt requires PyQt4

Details

Merging Fedora-specific client code upstream Complete
Kernel patch for improved handling of core dumps to pipes In progress - patch submitted upstream
Implement CrashDB for Fedora NEEDINFO - we have a mostly-complete Turbogears crashdb implementation and RH-bugzilla based implementation (see this example bug ). Unsure which to use.
Crash notifier apportd.c starts with the user's X session and uses inotify to watch /var/crash
PyQt4 for apport-qt Package under review here , but qt-based interface is not required for release.
Packaging/Review In progress- packages here

Optional

User Experience

Contingency plan

None needed - this is a new feature and can be safely deferred if it is not ready.

Documentation

Information on installing & enabling apport (and reasons why you would want to do this) would be a good idea.

Release Notes

None needed - this should not be installed or enabled by default in F8 final.

Comments

Have you looked into https://blueprints.launchpad.net/ubuntu/+spec/apport-synaptic-integration? - RahulSundaram

  • Once Apport is working properly, this wouldn't be too tough. Yum could use the apport libraries to create a crash report with ProblemType: Packaging, which would then get picked up by the Crash Notifier. -WillWoods

So, now we're going to have GNOME doing their own thing , Firefox doing Breakpad, and distros doing something different. Yay. Can we try and get some collaboration going on here, please? I'd rather use what the apps are going to use, be it GNOME or Firefox. - ChristopherAillon

  • KDE also has its own solution (KCrash). - KevinKofler
  • Sounds like we really need to work together and create a spec that we can all implement together before we start doing work here. - ChristopherAillon