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
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
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
cmdline: /usr/bin/python /usr/share/virt-manager/virt-manager.py
comment: Delete several volumes from storage.
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.
Set the crash_function to "validate_row" (or others as apropriate) as signalled by the backtrace.
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:
Created attachment 578538 [details]
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.
Backtrace might contain a frame with function arguments text too long. Backtrace printer in GDB truncates them in this case.
Backtrace function arguments are poorly formatted.
Backtrace parser detects the "(truncated)" string indicating the function arguments were truncated. The parser state is adapted to this situation.
Backtrace parser correctly parses the backtrace with truncated function arguments correctly. Backtrace analysis is performed and it determines the crash function from the backtrace.
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.