From Fedora Project Wiki

Revision as of 09:05, 1 April 2010 by Jmoskovc (talk | contribs)

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.conf, ensure a reporting mechanism is configured for the CCpp plugin. A sample configuration that uses the Logger reporting plugin is noted below
    CCpp = Logger
  2. Restart the abrtd service with the command su -c 'service abrtd restart'
  3. Choose a C or C++ application to crash. 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. A desktop notification should appear in notification area. Open abrt-gui by clicking on it
  7. Pick the crash from the list, generate a crash report by pressing "Report" button, then choosing one of configured reporters (e.g. Logger, the simplest one). The prompt to choose a reporter plugin appears only if you have more than one configured

Expected Results

  1. The abrt-applet system tray icon should emerge with notification stating "Crash in package foo-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
    ...