On Tue, 13 Jul 2021 21:36:02 -0400
Todd Mortimer <[email protected]> wrote:

> I will have some time to look into this later this week. It looks like
> this is just libunwind expecting something to be present that isn't, but
> I am not sure what the best way to fix it would be.
> 
> Thanks!
> Todd

Hello Charlene, Todd.

I don't know about emacs, but I stopped getting SIGSEGV on macppc in
t_backtrace (in regress/gnu/lib/libexecinfo) after I used ld.lld to
link libexecinfo.so.3.0

With the old libexecinfo.so* from ld.bfd, t_backtrace got SIGSEGV about
3 in 4 times.  With the new libexecinfo.so* from ld.lld, I don't get
SIGSEGV, so t_backtrace fails in the expected way (with an empty
backtrace).  I don't know whether LLD fixes the problem or only hides
the problem.  It's weird, because I never had any trouble with ld.bfd
on powerpc before now.

The new macppc snapshot (20/21 Aug) was linked by lld, and has a
libexecinfo.so.3.0 that doesn't crash for me.

--George

> > (gdb) run                                                                   
> >                                      
> > Starting program: /usr/src/regress/gnu/lib/libexecinfo/t_backtrace -r 1     
> >                                      
> >                                                                             
> >                                      
> > Program received signal SIGSEGV, Segmentation fault.                        
> >                                      
> > libunwind::CFI_Parser<libunwind::LocalAddressSpace>::findFDE 
> > (addressSpace=..., pc=3122944028,                   
> >     ehSectionStart=3123060828, sectionLength=<optimized out>, 
> > fdeHint=<optimized out>, fdeInfo=0xfffcbce8,       
> >     cieInfo=0xfffcbcc8) at 
> > /usr/src/gnu/llvm/libunwind/src/DwarfParser.hpp:223                         
> >           
> > 223         pint_t cfiLength = addressSpace.get32(p);                       
> >                                      
> > (gdb) bt                                                                    
> >                                      
> > #0  libunwind::CFI_Parser<libunwind::LocalAddressSpace>::findFDE 
> > (addressSpace=..., pc=3122944028,               
> >     ehSectionStart=3123060828, sectionLength=<optimized out>, 
> > fdeHint=<optimized out>, fdeInfo=0xfffcbce8, 
> >     cieInfo=0xfffcbcc8) at 
> > /usr/src/gnu/llvm/libunwind/src/DwarfParser.hpp:223
> > #1  0xba24cfd0 in libunwind::UnwindCursor<libunwind::LocalAddressSpace, 
> > libunwind::Registers_ppc>::getInfoFromDwarfSection (this=0xfffcc920, 
> > pc=3122944028, sects=..., fdeSectionOffsetHint=0)
> >     at /usr/src/gnu/llvm/libunwind/src/UnwindCursor.hpp:1518
> > #2  0xba249ce4 in libunwind::UnwindCursor<libunwind::LocalAddressSpace, 
> > libunwind::Registers_ppc>::setInfoBasedOnIPRegister (this=0xfffcc920, 
> > isReturnAddress=<optimized out>)
> >     at /usr/src/gnu/llvm/libunwind/src/UnwindCursor.hpp:1927
> > #3  0xba2480a8 in __unw_init_local (cursor=0xfffcc920, context=0xfffcc578)
> >     at /usr/src/gnu/llvm/libunwind/src/libunwind.cpp:76
> > #4  0xba24582c in _Unwind_Backtrace (callback=0xba24ec54 <tracer>, 
> > ref=0xfffccd28)
> >     at /usr/src/gnu/llvm/libunwind/src/UnwindLevel1-gcc-ext.c:112
> > #5  0xba24ebd4 in backtrace (arr=<optimized out>, len=<optimized out>)
> >     at /usr/src/gnu/lib/libexecinfo/unwind.c:69
> > #6  0x2d1e070c in myfunc3 () 
> > 


-- 
George Koehler <[email protected]>

Reply via email to