backtrace() vs. _Unwind_Backtrace()

Andrew Haley aph@redhat.com
Mon Dec 8 12:54:00 GMT 2003


Bryce McKinlay writes:
 > On Dec 7, 2003, at 12:21 AM, Andrew Haley wrote:
 > 
 > > I don't want it to sound like I'm opposed to the approach of calling
 > > _Unwind_Backtrace() directly. It sounds quite a clean idea. However,
 > > not every architecture supports DWARF2, and if we have a new
 > > architecture for unwinding we need to support those targets too.
 > 
 > The thing is, backtrace() alone doesn't help us much. Without DWARF2, 
 > we can't find the start of the function, and can't lookup the 
 > Class/Method. So why bother?
All we need is a method that maps pc->name. We know that we can use
addr2line to do that, and we are about to get a demangler that we can
link into libgcj.
 > > I am also not keen on checking in a performance regression at this
 > > stage in 3.4. It might be that the cost of
 > > _Unwind_FindEnclosingFunction is so much higher than that of unwinding
 > > the stack that the difference vanishes into the noise. I don't know.
 > 
 > I don't know either, but I would guess that the linear searching done 
 > to find the FDE is a major reason why the _Unwind_ functions are slow. 
Which linear search do you mean? We should be using a binary search
now, at least within each object. We were using a linear search for a
while because the DWARF info for libffi was incomplete.
 > As part of an _Unwind_Backtrace, we can use _Unwind_GetRegionStart 
 > instead of _Unwind_FindEnclosingFunction - this avoids looking each FDE 
 > twice.
That's a sensible optimization.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /