StacktraceSource contains errors instead of source code
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| | Apport |
Undecided
|
Unassigned | ||
| | apport (Ubuntu) |
Medium
|
Martin Pitt | ||
Bug Description
The StacktraceSource information being added by apport-retrace contains Error messages see the attachment in bug 1459716.
Here's part of it:
#0 0xb7751be0 in __kernel_vsyscall ()
#1 0xb6813057 in __GI_raise (sig=6) at ../sysdeps/
[Error: ../sysdeps/
#2 0xb6814699 in __GI_abort () at abort.c:89
[Error: abort.c was not found in source tree]
#3 0xb685119e in __libc_message (do_abort=1, fmt=0xb694b444 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/
[Error: ../sysdeps/
I think part of the issue is that apport-retrace only ever searches the srcdir returned by get_source_tree (which is a temporary directory) and doesn't search the sandbox for the filename. Another problem is that find_file_dir is being passed a filename like "../sysdeps/
Related branches
| Brian Murray (brian-murray) wrote : | #1 |
| Brian Murray (brian-murray) wrote : | #2 |
Examples of bugs with good StacktraceSources include:
bug 1297212
bug 1061026
bug 1225365
bug 1415515
bug 1304003
bug 1351558
So it seems to work some of the time.
| Brian Murray (brian-murray) wrote : | #3 |
Looking in my stash of bug report attachments for foundations-bugs it seems that about only 10% don't contain an error in the StacktraceSource.
| Changed in apport (Ubuntu): | |
| importance: | Undecided → Medium |
| Brian Murray (brian-murray) wrote : | #4 |
Also when working with the xeyes crash I found the missing NextEvent.c file in the source for libx11-1.6.3.
| Changed in apport (Ubuntu): | |
| assignee: | nobody → Martin Pitt (pitti) |
| Martin Pitt (pitti) wrote : | #5 |
Fixed in trunk: http://
Thanks Brian, nicely spotted! I tested this with the usual bash -c 'kill -SEGV $$' and StacktraceSource went from "useless" to "OMG real code!".
| Changed in apport: | |
| status: | New → Fix Released |
| Changed in apport (Ubuntu): | |
| status: | New → Fix Committed |
| Launchpad Janitor (janitor) wrote : | #6 |
This bug was fixed in the package apport - 2.18-0ubuntu9
---------------
apport (2.18-0ubuntu9) wily; urgency=medium
* Revert changes to data/package_hook to include the package version. This
just hides the problem that somewhere during whoopsie add_package_info()
is not called. (See LP #1485787)
* packaging-
/etc/
read-only system image and accept it as distro package. With this we don't
need /var/lib/apt/lists/ indexes any more just to confirm the origin.
(LP: #1489410)
* Merge fixes from trunk:
- whoopsie-
device"). (LP: #1476258)
- apport-retrace: Only consider the file name of a source file, not its
path; the latter often contains parts like "../" or directories which are
specific to a build machine. This fixes most broken StacktraceSource
results. (LP: #1462491)
-- Martin Pitt <email address hidden> Mon, 31 Aug 2015 11:35:54 +0200
| Changed in apport (Ubuntu): | |
| status: | Fix Committed → Fix Released |


I fixed the filename being searched for via the following.
@@ -178,7 +185,8 @@ 'Stacktrace' ].splitlines( ): match(frame) 1).split( "/")[-1]
for frame in report[
m = src_frame.
if m:
- result += frame + '\n' + get_code(srcdir, m.group(1), int(m.group(2)))
+ filename = m.group(
+ result += frame + '\n' + get_code(srcdir, cache, filename, int(m.group(2)))
Then a StacktraceSource looked like this:
#3 0x00007ffff776889d in XtAppMainLoop (app=0x6090e0) at ../../src/ Event.c: 1554 xeyes.c: 137 Widget ("eyes", eyesWidgetClass, toplevel, NULL, 0); toplevel) , XtWindow(toplevel), app_context) ;
[Error: Event.c was not found in source tree]
#4 0x000000000040198f in main (argc=1, argv=<optimized out>) at ../xeyes/
132:
133: (void) XtCreateManaged
134: XtRealizeWidget (toplevel);
135: (void) XSetWMProtocols (XtDisplay(
136: &wm_delete_window, 1);
137: XtAppMainLoop(
138:
139: return 0;
140: }