From Fedora Project Wiki

No edit summary
(ABRT 2 updates)
Line 2: Line 2:
|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 with the command {{command|su -c 'service abrtd restart'}}
<pre>
# Choose a C or C++ application to crash.  For this example, we will use the {{command|sleep}} command which is provided by {{package|coreutils}}
EVENT=post-create                      abrt-action-save-package-data
include events.d/*.conf
</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}}
# If you changed configuration, restart the ''abrtd'' service with the command {{command|su -c 'service abrtd restart'}}.
# Choose any ELF binary application and crash it.  For this example, we will use the {{command|sleep}} command which is provided by {{package|coreutils}}.
# 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}}
# 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}}
# 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}}
# A desktop notification should appear in notification area. Open {{command|abrt-gui}} by clicking on it
# Open {{command|abrt-gui}} by clicking on applet icon or notification.
# 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
# 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
|results=
|results=
# The ''abrt-applet'' system tray icon should emerge with notification stating "Crash in package foo-1.2.3 has been detected"
# A desktop notification and applet icon should appear in notification area with notification stating "Crash in package coreutils-1.2.3 has been detected"
# There are two buttons in the notification:
# There are two buttons in the notification:
## "Report" -> opens the reporter dialog for the latest detected crash directly
## "Report" -> opens the reporter dialog for the latest detected crash directly
## "Open ABRT" -> opens the main window
## "Open ABRT" -> 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:
# Selecting the application from {{command|abrt-gui}} and reporting the failure should generate a proper backtrace. Proper backtrace should have symbolic information, for example:
#:<pre>
<pre>
#: Core was generated by `sleep 1260'.
#: Core was generated by `sleep 1260'.
#: Program terminated with signal 6, Aborted.
#: Program terminated with signal 6, Aborted.
Line 38: Line 43:
#:        ok = true
#:        ok = true
#: ...
#: ...
#:</pre>
</pre>
}}
}}
[[Category:Package_abrt_test_cases]]
[[Category:Package_abrt_test_cases]]

Revision as of 19:55, 14 March 2011

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
#: ...