Michael Richardson wrote:
> I don't know whether to blame a recent update to debian testing from stable 
> --- likely it would be a glibc issue, but...
> I did run into the _syscall0() problem after that, and I found that I could 
> get around it by appropriately #define 
> _KERNEL prior to #include <linux/unistd.h>. What I don't get about the remark 
> of Paolo is that _syscall0() is a userland 
> thing, not a kernel thing.
> 
> I.e. any user program should be able to use _syscall() to get an open coded 
> call to the kernel.
> 
> Anyway, my problem: 2.6.15, 2.6.17.13 (both patched as above), and 2.6.19-rc3 
> all fail during ifup -a:
> 
> + echo -n 'Configuring network interfaces: '
> Configuring network interfaces: + ifup -a
> BUG: soft lockup detected on CPU#0!
> 083bf9f0:  [<080632a2>] dump_stack+0x22/0x30
> 083bfa08:  [<080a25c4>] softlockup_tick+0x84/0xa0
> 083bfa20:  [<0808ca32>] run_local_timers+0x12/0x20
> 083bfa28:  [<0808c796>] update_process_times+0x36/0x90
> 083bfa48:  [<080636fc>] timer_handler+0x3c/0x70
> 083bfa64:  [<080798f9>] sig_handler_common_skas+0xa9/0x100
> 083bfa88:  [<08075413>] real_alarm_handler+0x23/0x60
> 083bfaa0:  [<080754a2>] alarm_handler+0x52/0x70
> 083bfabc:  [<08077eda>] hard_handler+0x1a/0x20
> 083bfacc:  [<ffffe420>] _etext+0xf7df5404/0x0
> 083bfe14:  [<081a3431>] inet_ioctl+0x61/0xa0
> 083bfe2c:  [<081525a4>] sock_ioctl+0x144/0x2b0

I've tracked this down to a number of places. It looks like the ifa->ifa_dev is 
not
valid when the notification chain is called:

08707a08:  [<08074329>] sig_handler_common_skas+0xa9/0x120
08707a30:  [<0806ff25>] sig_handler+0x35/0x70
08707a4c:  [<080728ea>] hard_handler+0x1a/0x20
08707a5c:  [<ffffe420>] _etext+0xf7defac0/0x0
08707d64:  [<0808bcdc>] notifier_call_chain+0x6c/0x90
08707d94:  [<0808beb0>] blocking_notifier_call_chain+0x30/0x50
08707db0:  [<081a2d14>] __inet_insert_ifa+0xd4/0x160
08707dd4:  [<081a2dbd>] inet_insert_ifa+0x1d/0x20

The stack item <ffffe420>] _etext+0xf7defac0/0x0, seems to be bogus. I 
instrumented
kernel/sys.c, to print the functions which notifier_call_chain was calling,
and learnt that it was crashing in arch/um/drivers/net_kern.c because of:
        struct net_device *dev = ifa->ifa_dev->dev;

in uml_inetaddr_event.

sure enough, ifa->ifa_dev was NULL. Naturally, if I run things manually, or 
under GDB, it fails.
Furthermore, this happens with 2.6.15 and 2.6.17.13 (patched to compile on 
etch), and
with 2.6.19-rc3 (which I'm using as my debug base).  I tried with gcc-3.3 and 
with gcc-4.1.2.

So, whatever is going on is related somehow to the glibc, (my guess), but 
represents some
real bug that has been hidden for awhile.

I patched around the problem in uml_inetaddr_event (return immediately if 
ifa_dev==NULL), and found
the next instance of it net/ipv4/fib_frontend.c, in fib_netdev_event.
Clearly, either we aren't initializing something right, or it's getting blown 
away at some point.
Perhaps a different malloc policy in this glibc?

I will spend the rest of today on this (I'm at IETF in San Diego), but 
afterwards,
I'll begin to start reverting to sarge (if I can), so that I can continue 
working on my real problem.
I should be on IRC and in jabber. ([EMAIL PROTECTED], [EMAIL PROTECTED]).

(Hmm. I'm trying Mozilla news for gmane.org reading. I don't like the composer 
much, I have no
idea what column I'm on...)


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to