This happens for stack traces whose first 15 frames consist of more than
20% unresolvable addresses, i. e. addresses which do not belong into any
known range in /proc/pid/maps. For example, an xeyes stack trace without
debug symbols looks like this:

#0  0x00007fa41cf4b430 in __poll_nocancel () at 
../sysdeps/unix/syscall-template.S:81
#1  0x00007fa41da94458 in _XtWaitForSomething () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#2  0x00007fa41da95df3 in XtAppProcessEvent () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#3  0x00007fa41da8a4bd in XtAppMainLoop () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#4  0x00000000004018e7 in ?? ()
#5  0x00007fa41ce81c15 in __libc_start_main (main=0x401760, argc=1, 
ubp_av=0x7fff260180a8, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, stack_end=0x7fff26018098) at libc-start.c:227
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -7013435209680200018, 
4200756, 140733831020704, 0, 0, 7013522814131723950, 7053617805804002990}, 
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x403030, 0x7fff260180a8}, data 
= {prev = 0x0, cleanup = 0x0, canceltype = 4206640}}}
        not_first_call = <optimized out>
#6  0x000000000040195d in ?? ()
#7  0x00007fff26018098 in ?? ()
#8  0x000000000000001c in ?? ()
#9  0x0000000000000001 in ?? ()
#10 0x00007fff26019776 in ?? ()
#11 0x0000000000000000 in ?? ()

Note the very low addresses in frames 8, 9, and 11. These are absolutely
impossible as under Unix the first page (i. e. everything up to 0xFFF)
is always unallocated memory. So these look like gdb artifacts. With x11
-apps-dbgsym, these are gone and it looks much cleaner:

#0  0x00007fa41cf4b430 in __poll_nocancel () at 
../sysdeps/unix/syscall-template.S:81
#1  0x00007fa41da94458 in _XtWaitForSomething () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#2  0x00007fa41da95df3 in XtAppProcessEvent () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#3  0x00007fa41da8a4bd in XtAppMainLoop () from 
/usr/lib/x86_64-linux-gnu/libXt.so.6
#4  0x00000000004018e7 in main (argc=1, argv=<optimized out>) at 
../xeyes/xeyes.c:137
        app_context = 0xd0b0e0
        toplevel = <optimized out>
        arg = {{name = 0x604792 <XtShellStrings+18> "iconPixmap", value = 
67108865}, {name = 0x6047be <XtShellStrings+62> "iconMask", value = 67108867}}
        i = 2

So as a first and very safe measure, we can ignore frames with addresses
< 0x1000. Also, by now I have grown quite a lot of confidence in our
StackAddressSignature approach, so I'm inclined to remove the current
safety heuristics of "at most 20% frames without resolvable offsets" and
just ignore frames with unresolvable offsets instead. We still keep the
minimum length requirement.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1084996

Title:
   StacktraceAddressSignature is missing

To manage notifications about this bug go to:
https://bugs.launchpad.net/apport/+bug/1084996/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to