3 bugs found.

bibo,mao bibo.mao@intel.com
Wed Sep 20 08:29:00 GMT 2006


When running these three test cases, system also hanged up on my ia32 machine,
and my kernel version is latest git kernel.

David Smith wrote:
> James Dickens wrote:
>  > Here are 3 scripts, one line each, they each break the Systemtap one
>  > is old, just needs to expand the current bug report.
>  >
>  > Linux localhost.localdomain 2.6.17-1.2187_FC5 #1 Mon Sep 11 01:17:06
>  > EDT 2006 i686 athlon i386 GNU/Linux
> 
> Since I've got a similar system (except mine isn't an athlon), I decided
> to take a look at these.  See stuff below.
> 
>  > Latest cvs updates as of 2  hours ago.
>  >
>  > Distro: Fedora FC5
>  >
>  > Stack fault on the cpu. Halting the machine, This is x86 previously
>  > only filed for x86_64
>  >
>  > probe kernel.function("*") { print(".") }
>  >
>  > To narrow it down a bit, this causes the same stack fault
>  >
>  > probe kernel.function("*@kernel/*") { printf("here\n"); }
> 
> I've narrowed this one down.  This only happens when probing
> 'atomic_notifier_call_chain'.
If there is recursive kprobe, the reenter kprobe hanlder path will include 
atomic_notifier_call_chain function, that will cause numerous recursive kprobe.
In kernel side this function should be labeled with prefix __kprobe.

>  > This one produces an oops, I can post the end of it, if nobudy else
>  > can reproduce that has a serial console.
>  >
>  > probe kernel.function("*@kernel/spinlock.c") { printf("."); }
> 
> I've reproduced this one with '_spin_unlock_irqrestore'.  On the console
> I get:
> 
> BUG: spinlock lockup on CPU#0
In file runtime/transport/procfs.c of systemtap package, two function both call
spin_lock_irqsave function, these two function are _stp_write and 
_stp_proc_read_cmd. If any function or code between spin_lock_irqsave and 
spin_unlock_irqrestore of _stp_proc_read_cmd is probed, there will be possible
deadlock, because probe handler will call _stp_write function. 

On kernel side if kretprobe address falls between 
spin_lock_irqsave/spin_unlock_irqrestore space of kprobe_flush_task function 
there will be deadlock also.

> 
> With those two functions added to the blacklist (I'm not sure that is
> the right fix, I just want to get past those two functions), the
> following works correctly:
> 
> probe kernel.function("*@kernel/*") { printf("here\n"); }
> 
> Now your first probe (probing the entire kernel) still fails.  I'm
> trying to narrow it down.
> 
> --
> David Smith
> dsmith@redhat.com
> Red Hat, Inc.
> http://www.redhat.com
> 256.217.0141 (direct)
> 256.837.0057 (fax)
> 



More information about the Systemtap mailing list