Bug 811147

Summary: Report correct crash_function in the crash sumary
Product: Red Hat Enterprise Linux 6 Reporter: Peter Krempa <pkrempa>
Component: btparserAssignee: Karel Klíč <kklic>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: medium Docs Contact:
Priority: medium    
Version: 6.3CC: ddumas, mnowak, nobody+abrt-devel-list, rvokal
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: btparser-0.16-2.el6 Doc Type: Bug Fix
Doc Text:
Cause Backtrace might contain a frame with function arguments text too long. Backtrace printer in GDB truncates them in this case. Consequence Backtrace function arguments are poorly formatted. Fix Backtrace parser detects the "(truncated)" string indicating the function arguments were truncated. The parser state is adapted to this situation. Result Backtrace parser correctly parses the backtrace with truncated function arguments correctly. Backtrace analysis is performed and it determines the crash function from the backtrace.
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-20 07:10:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Proposed patch none

Description Peter Krempa 2012-04-10 09:41:50 UTC
Description of problem:
When a crash occurs on a machine that runs ABRT and the crashed application has multiple threads, the crash may be set to the name of function that was executed in the other thread that did not cause the crash. This may mislead the developer while triaging the bug.

Version-Release number of selected component (if applicable):
abrt version: 2.0.5 in rhel 6.2

How reproducible:
100% while inducing a crash in certain applications

Steps to Reproduce:
1. Enable ABRT
2. follow steps to reproduce crash in virt manager:  https://bugzilla.redhat.com/show_bug.cgi?id=803600
3. analyze the report
  
Actual results:
Virt manager crashes on a bug in PyGtk or the application self but the error report states that the crashing function was in a libvirt call (or other irrelevant function in the other thread):

abrt version: 2.0.5
backtrace_rating: 4
cmdline:        /usr/bin/python /usr/share/virt-manager/virt-manager.py
comment:        Delete several volumes from storage.
crash_function: write
executable:     /usr/bin/python
kernel:         2.6.32-220.7.1.el6.x86_64
reason:         Process /usr/bin/python was killed by signal 11 (SIGSEGV)
time:           Thu 15 Mar 2012 09:22:48 AM CET
...

although in the backtrace provided by abrt states:
[New Thread 3575]
[New Thread 3618]
[Thread debugging using libthread_db enabled]
Core was generated by `/usr/bin/python /usr/share/virt-manager/virt-manager.py'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000003b26460e69 in validate_row (tree_view=0x1bac640, tree=0x7fafc004c960, node=0x1fe90c0, iter=0x7fff21c84380, path=<value optimized out>) at gtktreeview.c:5699
5699	gtktreeview.c: No such file or directory.
	in gtktreeview.c

Expected results:
Set the crash_function to "validate_row" (or others as apropriate) as signalled by the backtrace.

Additional info:
The full backtrace that is provided by ABRT is long and the threads are hard to distinguish (apart from that, it's really usefull) especialy in python programs. The correct crash_function as provided by the backtrace makes it easier just to search the backtrace for the name and make triaging easier.

Bug reports by ABRT that show the same flaw:
https://bugzilla.redhat.com/show_bug.cgi?id=803600
https://bugzilla.redhat.com/show_bug.cgi?id=749234
https://bugzilla.redhat.com/show_bug.cgi?id=809435

Comment 3 Karel Klíč 2012-04-19 08:31:44 UTC
Created attachment 578538 [details]
Proposed patch

Comment 7 Karel Klíč 2012-06-12 12:53:44 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause
  Backtrace might contain a frame with function arguments text too long. Backtrace printer in GDB truncates them in this case.

Consequence
  Backtrace function arguments are poorly formatted.  

Fix
  Backtrace parser detects the "(truncated)" string indicating the function arguments were truncated.  The parser state is adapted to this situation.

Result
  Backtrace parser correctly parses the backtrace with truncated function arguments correctly.  Backtrace analysis is performed and it determines the crash function from the backtrace.

Comment 9 errata-xmlrpc 2012-06-20 07:10:40 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2012-0841.html