This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 *)&REG_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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]