This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: registration error (rc -84) and -DSTP_OVERLOAD_THRESHOLD
Hi, Rich -
> > > kernel.function("tcp_new_space@net/ipv4/tcp_input.c:4885") (address
> > > 0xffffffff814064f0) registration error (rc -84)
> >
> > This is an error (-EILSEQ) that comes from the kernel, most likely
> > arch/x86/kernel/kprobes.c. It may be a somehow blacklisted function,
> > or perhaps a problem with the 'optimized kprobes' widget. It may help
> > to get a vmlinux disassembly around that 0xffffffff814064f0 address.
>
> I'm also receiving these warnings. My script attempts to add a probe
> at every line in a module (yes, there's a good reason for it):
(Neat, it'd be interesting to hear more of the story, once you're done.)
> probe module("ext2").statement ("*@*.c:*") {
> printf ("%s\n", pp());
> }
>
> and I get maybe about 100 warnings like this:
>
> WARNING: probe module("ext2").statement("ext2_try_to_allocate_with_rsv@fs/ext2/balloc.c:1162") (address 0xffffffffa055f982) registration error (rc -84)
> WARNING: probe module("ext2").statement("ext2_new_blocks@fs/ext2/balloc.c:1270") (address 0xffffffffa055ff3b) registration error (rc -84)
> [...]
> Apart from the warnings, systemtap functions correctly.
>
> Because these addresses are in a module, I couldn't work out the right
> invocation of gdb / objdump to get it to disassemble those addresses.
> But if you tell me how, I'll be glad to provide that information.
You could rerun with stap -p2, when it tells you more about probe placement:
% stap -p2 -e 'probe module("ext2").statement ("*@*.c:*") {}'
[...]
module("ext2").statement("try_to_extend_reservation@fs/ext2/balloc.c") /* pc=.text+0xdb3 */ /* <- module("ext2").statement("*@*.c:*") */
module("ext2").statement("ext2_try_to_allocate_with_rsv@fs/ext2/balloc.c:1061") /* pc=.text+0xdbe */ /* <- module("ext2").statement("*@*.c:*") */
module("ext2").statement("try_to_extend_reservation@fs/ext2/balloc.c") /* pc=.text+0xdbe */ /* <- module("ext2").statement("*@*.c:*") */
[...]
Look for the pc=.text+0xdbe offset field in there. That'd be area to sic objdump onto:
[...]
db3: 48 89 df mov %rbx,%rdi
db6: 41 89 cf mov %ecx,%r15d
db9: e8 00 00 00 00 callq dbe <ext2_try_to_allocate_with_rsv+0x459>
dba: R_X86_64_PC32 rb_next-0x4
dbe: 48 85 c0 test %rax,%rax
dc1: 4d 63 ff movslq %r15d,%r15
[...]
(By the way, on my f13 x86-64 host, and rhel6 i686 vm's, I get none of
the -EILSEQ warnings.)
- FChE