Bug 203333

Summary: libunwind from base has trouble walking a simple stack
Product: Base System Reporter: Marcin Cieślak <saper>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Only Me CC: emaste, itetcu, jbeich, sobomax
Priority: ---    
Version: 10.1-STABLE   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 200778    

Description Marcin Cieślak 2015-09-25 13:51:38 UTC
security/tor-devel ports has a simple test case in C to check for correctness
of the backtrace() reporting:

https://gitweb.torproject.org/tor.git/tree/src/test/test_bt.sh
https://gitweb.torproject.org/tor.git/tree/src/test/test_bt_cl.c
https://gitweb.torproject.org/tor.git/tree/src/test/bt_test.py

One needs https://trac.torproject.org/projects/tor/ticket/17151 applied to make sure tor's configure considers using external -lexecinfo

When linking the test code against libexecinfo from base (using 10.1 amd64 r283908) a truncated result appears, because there is an unused reserved space on the stack:


$ ./src/test/test-bt-cl crash

============================================================ T= 1443178736
Tor  died: Caught signal 11
0x102c92d <clean_up_backtrace_handler+0x8d> at /home/saper/sw/tor/src/test/test-bt-cl
0x8016a8997 <pthread_sigmask+0x497> at /lib/libthr.so.3
0x102c205 <crash+0x25> at /home/saper/sw/tor/src/test/test-bt-cl

instead of 

> env LD_LIBRARY_PATH=/usr/local/lib ./src/test/test-bt-cl crash

============================================================ T= 1443178868
Tor  died: Caught signal 11
0x8016a8997 <pthread_sigmask+1175> at /lib/libthr.so.3
0x8016a81a8 <pthread_getspecific+3544> at /lib/libthr.so.3
0x102c205 <crash+37> at /home/saper/sw/tor/src/test/test-bt-cl
0x102c27f <oh_what+31> at /home/saper/sw/tor/src/test/test-bt-cl
0x102c2cf <a_tangled_web+31> at /home/saper/sw/tor/src/test/test-bt-cl
0x102c31f <we_weave+31> at /home/saper/sw/tor/src/test/test-bt-cl
0x102c462 <main+274> at /home/saper/sw/tor/src/test/test-bt-cl
0x102c0f1 <_start+417> at /home/saper/sw/tor/src/test/test-bt-cl

when using libexecinfo from ports.

Is it possible to update libexecinfo in base to fix this problem?

See also 

* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200778
* https://trac.torproject.org/projects/tor/ticket/17151
Comment 1 Marcin Cieślak 2015-09-25 13:53:39 UTC
I've tried base's clang 3.4, clang 3.7, gcc48 and gcc5. With clang it is even impossible to get function names in the gdb backtrace, even with gdb 7.9.1.
Comment 2 Ed Maste freebsd_committer freebsd_triage 2015-09-25 14:04:18 UTC
See the comment added in PR 200778 - this isn't a problem in base's libexecinfo but instead the unwind library in base.
Comment 3 Jan Beich freebsd_committer freebsd_triage 2016-11-03 05:24:54 UTC
(In reply to Ed Maste from comment #2)
> a problem in ... the unwind library in base

Is it so even after base r303394 ?