return probes and stack traces

Martin Hunt hunt@redhat.com
Tue Jun 28 20:40:00 GMT 2005


Am I correct that there is no easy way to find the return address from
within a return probe?

Here's what happens right now for an entry and return probe placed 
in uptime_read_proc(). Both call _stp_ret_addr() and _stp_stack_print().

ENTRY
return addr=ffffffff801a7cf6
 0xffffffff801a99d6 : uptime_read_proc+0x1/0xb8
 0xffffffff801a7cf6 : proc_file_read+0xe4/0x224
 0xffffffff80174bcf : vfs_read+0xcf/0x104
 0xffffffff80174e26 : sys_read+0x45/0x6e
 0xffffffff80110056 : system_call+0x7e/0x83

RETURN
return addr=10037ffa280
 0xffffffff801215a0 : kretprobe_trampoline+0x1/0x2
 0xffffffff8012159f : kretprobe_trampoline+0x0/0x2
 0xffffffff80174bcf : vfs_read+0xcf/0x104
 0xffffffff80174e26 : sys_read+0x45/0x6e
 0xffffffff80110056 : system_call+0x7e/0x83

So the return address and the calling function in the stack trace are
wrong. Reading the sources, I don't see an easy way to fix this. If that
is the case, I will just document it and not worry about it.

Martin




More information about the Systemtap mailing list