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: 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


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