Re: Protocol timer running before protocol init (Re: current panic igmp related ?)

From: Max Laier <max_at_love2party.net>
Date: Tue, 7 Dec 2004 15:39:40 +0100
On Tuesday 07 December 2004 14:25, Max Laier wrote:
> On Tuesday 07 December 2004 13:50, Robert Watson wrote:
> > On Tue, 7 Dec 2004, Poul-Henning Kamp wrote:
> > > Timecounters tick every 1.000 msec
> > > panic: mtx_lock() of spin mutex (null) _at_ ../../../netinet/igmp.c:431
> > > cpuid = 0
> > > KDB: enter: panic
> > > [thread pid 37 tid 100013 ]
> > > Stopped at      kdb_enter+0x2c: leave
> > > db> trace
> > > Tracing pid 37 tid 100013 td 0xc3485480
> > > kdb_enter(c06d85e0,100,c3485480,1af,c06e0fec) at kdb_enter+0x2c
> > > panic(c06d7ac5,0,c06e0fec,1af,c0713fc4) at panic+0x17f
> > > _mtx_lock_flags(c0738740,0,c06e0fec,1af,e4c97cc8) at
> > > _mtx_lock_flags+0x82 igmp_slowtimo(e,0,e4c97cf4,c050683a,0) at
> > > igmp_slowtimo+0x19
> > > pfslowtimo(0,27,0,2,2) at pfslowtimo+0x66
> > > softclock(0,0,0,c34d07e0,0) at softclock+0x10a
> > > ithread_loop(c34cf100,e4c97d48,c34cf100,c04e9200,0) at
> > > ithread_loop+0x18e fork_exit(c04e9200,c34cf100,e4c97d48) at
> > > fork_exit+0x7e
> > > fork_trampoline() at fork_trampoline+0x8
> > > --- trap 0x1, eip = 0, esp = 0xe4c97d7c, ebp = 0 ---
> >
> > igmp_mtx looks to be uninitialized here (BSS memory).  This suggests that
> > igmp_slowtimo is being called before igmp_init(), which strikes me as
> > somewhat odd.  There's recently been some rerrangement of the domain
> > initialization code to correct potentially related problems, but perhaps
> > things aren't quite there yet.  CC'ing Max on general principle. :-)
>
> That's not mine. Didn't touch the protosw parts ;)
>
> Still, the attached diff might help. It looks like we try to use Giant to
> protect the pfslowtimo() array walking, thus we must make sure that we hold
> Giant long enough while we set things up. I hope protosw_init() and therein
> called pr_init()s are fine with Giant hold. It'd surprise me, if not.

Actually, that will only help in the debug.mpsafenet=0 case. A better fix is 
to initialize first and hook into the array afterwards - not sure if that is 
a safe thing to do for all protocols.

-- 
/"\  Best regards,                      | mlaier_at_freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier_at_EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News

Received on Tue Dec 07 2004 - 13:39:05 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:24 UTC