This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: backtrace not working on mainline x86_64
Jose R. Santos wrote:
bibo,mao wrote:
In recent x86_64, process kernel stack is different from trap stack,
I modify runtime/stack.c _stp_stack_sprint() function, the original is
__stp_stack_sprint (str, (unsigned long *)®_SP(regs),
verbose, 0);
__stp_stack_sprint (str, (unsigned long *)REG_SP(regs), verbose,
0);
It works well for x86_86 in recent kernel version, this is only
temporary method.
That works for me.
What would be a good permanent fix for this? Should check for X86_64
and Kernel version be added to _stp_stack_sprint() function?
-JRS
The permanent fix for this would be implement the dump_stack_to_buffer()
function and push it to the main line (LKML). This is an exported
function in the kernel. Systemtap runtime just invokes this function
and pass to it a preallocated buffer, it will fill up the buffer with
stack info (either verbose or non-verbose).
I and Anil worked on a prototype for i386 and ppc64 last year, but did
not push it to the mainline yet, since could get away with what we are
doing in the runtime now.
Hien.