From Fedora Project Wiki

 
(16 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
{{Update}}
 +
 
{{QA/Test_Case
 
{{QA/Test_Case
|description= This test case is designed to confirm that ''abrt'' can properly detect and diagnose application crashes from C/C++ programs.
+
|description= This test case is designed to confirm that ABRT can properly detect and diagnose application crashes from C/C++ programs.
 
|actions=
 
|actions=
# In {{filename|/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 <pre>CCpp = Logger</pre>
+
# In {{filename|/etc/abrt/abrt_event.conf}}, ensure a reporting mechanism is configured to save package data:
# Restart the ''abrtd'' service <pre>service abrtd restart</pre>
+
#:EVENT=post-create                      abrt-action-save-package-data
# Choose a C or C++ application to crash.  For this example, we will use the {{command|sleep}} command which is provided by {{package|coreutils}}.
+
#:include events.d/*.conf
# Run the application you wish to capture a crash.  If using the {{command|sleep}} command, open a terminal and run the command: <pre>sleep 5m</pre>
+
# Make sure you have <tt>EVENT=post-create analyzer=CCpp         abrt-action-analyze-c</tt> in {{filename|/etc/abrt/events.d/ccpp_events.conf}}
# In another terminal, force an application crash by locating the process id, and using the {{command|kill}} command. For example, <pre>pkill -SIGSEGV sleep</pre>
+
{{admon/note|These are defaults|The settings above are the defaults. If you are running a clean live image or have never manually changed abrt configuration, they should be correct.}}
# A desktop notification should appear in notification area.
+
# If you changed configuration, restart the ''abrtd'' service with the command {{command|su -c 'service abrtd restart'}}.
# Open {{command|abrt-gui}} by clicking on it.
+
# Choose any ELF binary application and crash it.  For this example, we will use the {{command|sleep}} command which is provided by {{package|coreutils}}.
# Pick the chras from the list, generate a crash report using "Report" button on the toolbar.
+
# Run the application you wish to capture a crash.  If using the {{command|sleep}} command, open a terminal and run the command: {{command|sleep 5m}}
 +
# In another terminal, force an application crash by locating the process id, and using the {{command|kill}} command, or using {{command|pkill}} or {{command|killall}}. For example, {{command|pkill -SIGSEGV sleep}}
 +
# Open {{command|abrt-gui}} by clicking on applet icon or notification.
 +
# 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 e.g. Logger, review the backtrace and finally report data.
 
|results=
 
|results=
# The {{command|abrt}} application detects the failure by updating the desktop icon
+
# A desktop notification and applet icon should appear in notification area with notification stating "Crash in package coreutils-1.2.3 has been detected"
# Clicking the icon, or running the command {{command|abrt-gui}} displays the recently failed application
+
# There are two buttons in the notification:
# Selecting the application from {{command|abrt-gui}} and reporting the failure generates a proper backtrace. (FIXME ... perhaps a link to what a good backtrace is)
+
## "Report" -> opens the reporter dialog for the latest detected crash directly
 +
## "Show" -> opens the main window
 +
# Selecting the application from {{command|abrt-gui}} and reporting the failure should generate a proper backtrace. Proper backtrace should have symbolic information, for example:
 +
#: Core was generated by `sleep 5m'.
 +
#: 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
 +
#: ...
 
}}
 
}}
[[Category:ABRT_Test_Cases]]
+
[[Category:Package_abrt_test_cases]]

Latest revision as of 17:50, 22 September 2011

Outdated.png
This wiki page is outdated
Please update this wiki page to reflect recent events or newly available information.


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
  2. Make sure you have EVENT=post-create analyzer=CCpp abrt-action-analyze-c in /etc/abrt/events.d/ccpp_events.conf
Note.png
These are defaults
The settings above are the defaults. If you are running a clean live image or have never manually changed abrt configuration, they should be correct.
  1. If you changed configuration, restart the abrtd service with the command su -c 'service abrtd restart'.
  2. 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.
  3. Run the application you wish to capture a crash. If using the sleep command, open a terminal and run the command: sleep 5m
  4. 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
  5. Open abrt-gui by clicking on applet icon or notification.
  6. 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 e.g. Logger, review the backtrace and finally report data.

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. "Show" -> 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 5m'.
    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
    ...