backtrace not working on mainline x86_64
Hien Nguyen
hien@us.ibm.com
Wed Apr 12 15:43:00 GMT 2006
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.
More information about the Systemtap
mailing list