[Crash-utility] crash version 4.0-4.1 is available

Dave Anderson anderson at redhat.com
Tue May 1 13:12:50 UTC 2007


Vivek Goyal wrote:

> On Fri, Apr 27, 2007 at 12:12:29PM -0400, Dave Anderson wrote:
> >
> > - Implemented dependable backtraces for the x86_64 architecture. (!!!)
> >   This feature builds upon the current "low_budget" backtrace function,
> >   and also required the fix for the BUG()/ud2a disassembly problem
> >   addressed in 4.0-3.22.  It does not require kernel unwind support,
> >   but rather it calculates function framesizes by disassembling the
> >   code from the beginning of the function to the point where it calls
> >   the next function, parsing for add or sub instructions on the rsp,
> >   and for push and pop instructions, thereby determining the framesize
> >   of the function at the point of the call.  This is similar to what is
> >   done for x86, but requires far less hackery.  You will notice a slight
> >   hitch the first time a "bt" is done on a task, but for each text
> >   return address in any backtrace, its framesize is cached for all
> >   subsequent instances.  It also accounts for backtrace text return
> >   addresses from the .text.lock section, by appending "(via function)"
> >   to the end of the frame line.  Also, because it layers on top of the
> >   current backtrace code, it does not compromise the capability of
> >   switching between the process, IRQ, and exception stacks.  That all
> >   being said, 100% accuracy cannot be guaranteed.  But for the ~30
> >   sample dumpfiles I keep around for x86_64 testing, I cannot find any
> >   obviously invalid backtraces.  However, if there is any doubt, the
> >   "bt -o" option will perform backtraces using the "old" manner; and
> >   "bt -O" will force the old manner to always be used.  Of course the
> >   "bt -t" and "bt -T" options are still available.  It's interesting to
> >   redirect the output of "foreach bt" to a file using this version, and
> >   then compare it with the output from an older version.
> >   (anderson at redhat.com)
> >
>
> Hi Dave,
>
> Why to go for this approach? Does it give better backtraces as compared
> to retrieving the information from kernel vmlinux (unwind info) or
> from debug sections?
>

Why go for this approach?  Because it works?

I don't understand what you mean by "Does it give better backtraces as
compared to..."  What are you talking about -- compared to what?

The initial attempt to use the unwind/debug data was never accomplished,
and then the rug was pulled when CONFIG_UNWIND_INFO was de-configured
from the kernel, leaving the kernel being built with -fno-asynchronous-unwind-tables
and the vmlinux  .eh_frame section discarded.

Dave





More information about the Crash-utility mailing list