Hi,

I am attempting to unwind from an optimized shared (non-stripped) library 
compiled with debugging information. However I cannot unwind pass the second 
entry on the call stack. Ideally I would like to unwind all the way back to 
main and I understand libunwind has techniques it uses when and if the frame 
pointers/dwarf information is unavailable and I want to make sure that I'm 
using libunwind in such a way that gives it is the best possibility to use 
these techniques. Here are some details:

Linux x86_64
Libunwind version 1.1
Library name: libsatlas.so
Leaf Symobol name:  ATL_spKBmm (after this location unw_step() returns 0)

Actual stack (from gdb):

#0  0x00007ffff7851e00 in ATL_spKBmm () from /usr/local/atlas/lib/libsatlas.so
#1  0x00007ffff7917830 in ATL_smmJIK2 () from /usr/local/atlas/lib/libsatlas.so
#2  0x00007ffff79187ad in ATL_smmJIK () from /usr/local/atlas/lib/libsatlas.so
#3  0x00007ffff790fb7b in ATL_sgemm () from /usr/local/atlas/lib/libsatlas.so
#4  0x00007ffff769a831 in atl_f77wrap_sgemm_ () from 
/usr/local/atlas/lib/libsatlas.so
#5  0x00007ffff7699a64 in sgemm_ () from /usr/local/atlas/lib/libsatlas.so
#6  0x00000000004008e5 in fa () at sgemm_port.f90:39
#7  0x000000000040091d in MAIN__ () at sgemm_port.f90:59

I've also attached debugging information from libunwind. This is the 
information printed at the last attempt to unwind:

>_Ux86_64_step: (cursor=0x7fff8ec56d10, ip=0x00007f321ed00a1d, 
>cfa=0x00007fff8ec57728)
>_Ux86_64_step: [RBP=0x7fff8ec571f8] = 0x4620 (cfa = 0x7fff8ec57728) -> 0x0
  >_Ux86_64_step: NULL %rbp loc, returning 0

Thanks for any insight.


-          Scott
 >_Ux86_64_init_mem_validate: using msync to validate memory
 >_Ux86_64_init_local: (cursor=0x7fff8ec56d10)
 >_Ux86_64_step: (cursor=0x7fff8ec56d10, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec568e0)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 53f8, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f3528b8
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f29a249 cfa=0x7fff8ec568e0 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321f29a249 cfa=0x7fff8ec568e0 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec568e0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d10, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec57150)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 5448, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f352908
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f29a4a1 cfa=0x7fff8ec57150 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321f29a4a1 cfa=0x7fff8ec57150 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec57150 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d10, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57180)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 8c94, segbase = 
 >7f321e55763c, debug_frame_base = 0, fde_addr = 7f321e5602d0
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57180 
format=1
     >_Ux86_64_cache_frame: cache frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57180 
format=1
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57180 
format=1 addr=0x7fff8ec57180 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d10, ip=0x00007f321ed00a1d, 
 >cfa=0x00007fff8ec57728)
 >_Ux86_64_step: [RBP=0x7fff8ec571f8] = 0x4620 (cfa = 0x7fff8ec57728) -> 0x0
  >_Ux86_64_step: NULL %rbp loc, returning 0
 >_Ux86_64_init_local: (cursor=0x7fff8ec56d90)
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec56960)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec56960 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec571d0)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec571d0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57200)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57200 
format=1 addr=0x7fff8ec57200 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321ecb5336, 
 >cfa=0x00007fff8ec57788)
 >_Ux86_64_step: [RBP=0x7fff8ec57278] = 0x360 (cfa = 0x7fff8ec57788) -> 0x0
  >_Ux86_64_step: NULL %rbp loc, returning 0
 >_Ux86_64_init_local: (cursor=0x7fff8ec56c10)
 >_Ux86_64_step: (cursor=0x7fff8ec56c10, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec567e0)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec567e0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56c10, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec57050)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec57050 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56c10, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57080)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57080 
format=1 addr=0x7fff8ec57080 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56c10, ip=0x00007f321eda65c4, 
 >cfa=0x00007fff8ec57630)
 >_Ux86_64_step: [RBP=0x7fff8ec570f8] = 0x2a0daa0 (cfa = 0x7fff8ec57630) -> 
 >0x48537d80485300c0
  >_Ux86_64_step: NULL %rbp loc, returning 0
 >_Ux86_64_init_local: (cursor=0x7fff8ec56d90)
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec56960)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec56960 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec571d0)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec571d0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57200)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57200 
format=1 addr=0x7fff8ec57200 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321ecb53ff, 
 >cfa=0x00007fff8ec57788)
 >_Ux86_64_step: [RBP=0x7fff8ec57278] = 0x360 (cfa = 0x7fff8ec57788) -> 0x0
  >_Ux86_64_step: NULL %rbp loc, returning 0
 >_Ux86_64_init_local: (cursor=0x7fff8ec56d90)
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec56960)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec56960 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec571d0)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec571d0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57200)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57200 
format=1 addr=0x7fff8ec57200 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56d90, ip=0x00007f321ecb54ff, 
 >cfa=0x00007fff8ec57788)
 >_Ux86_64_step: [RBP=0x7fff8ec57278] = 0x360 (cfa = 0x7fff8ec57788) -> 0x0
  >_Ux86_64_step: NULL %rbp loc, returning 0
 >_Ux86_64_init_local: (cursor=0x7fff8ec56fd0)
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321f29a249, 
 >cfa=0x00007fff8ec56ba0)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a249 cfa=0x7fff8ec56ba0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321f29a4a1, 
 >cfa=0x00007fff8ec57410)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29a4a1 cfa=0x7fff8ec57410 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321e3ffff0, 
 >cfa=0x00007fff8ec57440)
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e3ffff0 cfa=0x7fff8ec57440 
format=1 addr=0x7fff8ec57440 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 165c, segbase = 
 >7f321e1bdf5c, debug_frame_base = 0, fde_addr = 7f321e1bf5b8
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321e1b51f6 cfa=0x7fff8ec579e0 
format=0
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321e1b51f6, 
 >cfa=0x00007fff8ec579e0)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 165c, segbase = 
 >7f321e1bdf5c, debug_frame_base = 0, fde_addr = 7f321e1bf5b8
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321e1b51f6 cfa=0x7fff8ec579e0 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321e1b51f6 cfa=0x7fff8ec579e0 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e1b51f6 cfa=0x7fff8ec579e0 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 2f10, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f3503d0
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f291c8f cfa=0x7fff8ec57a40 
format=0
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321f291c8f, 
 >cfa=0x00007fff8ec57a40)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 2f10, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f3503d0
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f291c8f cfa=0x7fff8ec57a40 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321f291c8f cfa=0x7fff8ec57a40 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f291c8f cfa=0x7fff8ec57a40 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 5708, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f352bc8
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f29b2b4 cfa=0x7fff8ec57a50 
format=0
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321f29b2b4, 
 >cfa=0x00007fff8ec57a50)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 5708, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f352bc8
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321f29b2b4 cfa=0x7fff8ec57a50 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321f29b2b4 cfa=0x7fff8ec57a50 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321f29b2b4 cfa=0x7fff8ec57a50 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 9e04, segbase = 
 >7f321e55763c, debug_frame_base = 0, fde_addr = 7f321e561440
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321e40547a cfa=0x7fff8ec57a90 
format=0
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321e40547a, 
 >cfa=0x00007fff8ec57a90)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 9e04, segbase = 
 >7f321e55763c, debug_frame_base = 0, fde_addr = 7f321e561440
     >_Ux86_64_fetch_frame: fetch frame ip=0x7f321e40547a cfa=0x7fff8ec57a90 
format=0
     >_Ux86_64_cache_frame: cache frame ip=0x7f321e40547a cfa=0x7fff8ec57a90 
format=0
     >_Ux86_64_reuse_frame: reuse frame ip=0x7f321e40547a cfa=0x7fff8ec57a90 
format=0 addr=0x0 offset=+0
  >_Ux86_64_step: returning 1
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 3478, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f350938
 >_Ux86_64_step: (cursor=0x7fff8ec56fd0, ip=0x00007f321f291943, 
 >cfa=0x00007fff8ec57ad0)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 3478, segbase = 
 >7f321f34d4c0, debug_frame_base = 0, fde_addr = 7f321f350938
 >_Ux86_64_step: [RBP=0x7fff8ec57aa0] = 0x7fff8ec57ad0 (cfa = 0x7fff8ec57ad0) 
 >-> 0x7fff8ec57bd0
  >_Ux86_64_step: NULL %rbp loc, returning 0
_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to