kprobes problem

Baruch Even baruch@ev-en.org
Sat Mar 12 02:46:00 GMT 2005


Frank Ch. Eigler wrote:
> Hi -
> 
> 
> On Sat, Mar 12, 2005 at 03:34:45PM +0000, Baruch Even wrote:
> 
>>[...]
>>The ret code is at:
>>c0386cbb:       5d                      pop    %ebp
>>c0386cbc:       c3                      ret
>>
>>If I put the kprobe at cbc it crashes, if I put it in cbb it works. [...]
>>Is it impossible to put a kprobe on a ret instruction? [...]
> 
> 
> I think you encountered a genuine kprobes bug.  This might be a known
> limitation but I don't remember seeing it.  It may relate to the way
> instructions are manually decoded for copying or single-stepping.
> Would you mind helping out the debugging process by trying a few
> things, like
> 
> - finding some other "ret"'s in the kernel, and trying kprobes there

It happens in another function as well.

> - adding both pre- and post- handlers for the trial kprobes, and put
>   printk's in there, to see which (if any) gets processed

It runs both the pre and the post handlers and I get the printks.

> - transcribing the oops message

If needed I can provide my code, it's not a trade secret or anything 
like that... but it's doing nothing special.

invalid operand: 0000 [#1]
Modules linked in: ehci_hcd uhci_hcd
CPU:    0
EIP:    0060:[<c02e1bfa>]    Not tainted VLI
EFLAGS: 00010286   (2.6.11-baruch)
EIP is at hwif_init+0x15a/0x2b0
eax: 000000a6   ebx: df6f9680   ecx: def3a680   edx: 000000a0
esi: 3d98b690   edi: def3a680   ebp: 00000100   esp: c04a7d90
ds: 007b   es: 007b   ss: 0068
Process swapper (pid: 0, threadinfo=c04a6000 task=c041bc20)
Stack: def3a680 df6f9680 3d98b690 3d98b690 821b268c 0000fe88 def3a680 
def3a680
        00000100 df5f3034 c03892e7 3d98b690 def3a680 821b268c def3a680 
00000100
        df5f2034 c03899f2 def3a680 df6f9680 00000100 10000046 00000020 
df6f9680
Call Trace:
  [<c03892e7>] __tcp_data_snd_check+0xd7/0xf0
  [<c03899f2>] tcp_rcv_established+0x2d2/0x860
  [<c03934da>] tcp_v4_do_rcv+0x11a/0x120
  [<c0393b0c>] tcp_v4_rcv+0x62c/0x840
  [<c03769fb>] ip_local_deliver+0x9b/0x140
  [<c0376dbb>] ip_rcv+0x31b/0x440
  [<c0341317>] alloc_skb+0x47/0xf0
  [<c0348be7>] netif_receive_skb+0x157/0x1d0
  [<c02ad463>] e1000_clean_rx_irq+0x153/0x5d0
  [<c02aceed>] e1000_clean+0x4d/0x100
  [<c0348dd4>] net_rx_action+0x74/0x100
  [<c012506b>] __do_softirq+0x7b/0x90
  [<c01250a6>] do_softirq+0x26/0x30
  [<c010598b>] do_IRQ+0x3b/0x70
  [<c011458f>] smp_apic_timer_interrupt+0x2f/0x80
  [<c0103c22>] common_interrupt+0x1a/0x20
  [<c0101173>] mwait_idle+0x33/0x50
  [<c01010f0>] cpu_idle+0x50/0x60
  [<c04a87ef>] start_kernel+0x13f/0x160
  [<c04a83a0>] unknown_bootoption+0x0/0x1e0
Code: 00 85 d2 0f 84 bb 00 00 00 89 34 24 e8 50 f3 ff ff 85 c0 75 52 8b 
86 0c 05 00 00 89 6c 24 04 c7 04 24 20 54 3f c0 89 44 24 08 e8 <62> c9 
e3 ff 89 34 24 e8 5a fd ff ff 80 8e 3c 05 00 00 02 ba 01
  <0>Kernel panic - not syncing: Fatal exception in interrupt



More information about the Systemtap mailing list