From Fedora Project Wiki

Revision as of 19:55, 14 March 2011 by Mnowak (talk | contribs) (ABRT 2 updates)

Description

This test case is designed to confirm that ABRT can properly detect and diagnose application crashes from C/C++ programs.


How to test

  1. In /etc/abrt/abrt_event.conf, ensure a reporting mechanism is configured to save package data:
EVENT=post-create                       abrt-action-save-package-data
include events.d/*.conf
  1. Make sure you have EVENT=post-create analyzer=CCpp abrt-action-analyze-c in /etc/abrt/events.d/ccpp_events.conf
  2. If you changed configuration, restart the abrtd service with the command su -c 'service abrtd restart'.
  3. Choose any ELF binary application and crash it. For this example, we will use the sleep command which is provided by Package-x-generic-16.pngcoreutils.
  4. Run the application you wish to capture a crash. If using the sleep command, open a terminal and run the command: sleep 5m
  5. In another terminal, force an application crash by locating the process id, and using the kill command, or using pkill or killall. For example, pkill -SIGSEGV sleep
  6. Open abrt-gui by clicking on applet icon or notification.
  7. Pick the crash from the list, generate a crash report by pressing "Open" button, then provide meaningful information into text areas, choosing one of configured analyzers (e.g. Retrace Server). Then choose desired reporter facility

Expected Results

  1. A desktop notification and applet icon should appear in notification area with notification stating "Crash in package coreutils-1.2.3 has been detected"
  2. There are two buttons in the notification:
    1. "Report" -> opens the reporter dialog for the latest detected crash directly
    2. "Open ABRT" -> opens the main window
  3. Selecting the application from abrt-gui and reporting the failure should generate a proper backtrace. Proper backtrace should have symbolic information, for example:
#: Core was generated by `sleep 1260'.
#: Program terminated with signal 6, Aborted.
#: #0  0x00007f4b65f45380 in __nanosleep_nocancel () from /lib64/libc.so.6
#: 
#: Thread 1 (Thread 8328):
#: #0  0x00007f4b65f45380 in __nanosleep_nocancel () from /lib64/libc.so.6
#: No symbol table info available.
#: #1  0x00000000004037ab in rpl_nanosleep (requested_delay=0x7fff893f35c0, 
#:     remaining_delay=0x0) at nanosleep.c:69
#:         r = -516
#:         delay = {tv_sec = 1260, tv_nsec = 0}
#:         t0 = {tv_sec = 29277, tv_nsec = 542118648}
#: #2  0x000000000040321b in xnanosleep (seconds=<value optimized out>)
#:     at xnanosleep.c:112
#:         overflow = false
#:         ts_sleep = {tv_sec = 1260, tv_nsec = 0}
#:         __PRETTY_FUNCTION__ = "xnanosleep"
#: #3  0x000000000040176c in main (argc=2, argv=0x7fff893f3758) at sleep.c:147
#:         i = 2
#:         seconds = 1260
#:         ok = true
#: ...