Date: Tue, 7 Dec 2004 14:25:39 +0100 From: Max Laier <max@love2party.net> To: Robert Watson <rwatson@freebsd.org> Cc: current@freebsd.org Subject: Re: Protocol timer running before protocol init (Re: current panic igmp related ?) Message-ID: <200412071425.47840.max@love2party.net> In-Reply-To: <Pine.NEB.3.96L.1041207124807.99587I-100000@fledge.watson.org> References: <Pine.NEB.3.96L.1041207124807.99587I-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart5864589.AEktvzQOIo Content-Type: multipart/mixed; boundary="Boundary-01=_V9atBeVGf/h7x4/" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_V9atBeVGf/h7x4/ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline 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) @ ../../../netinet/igmp.c:431 > > cpuid =3D 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+0x= 82 > > 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+0x1= 8e > > fork_exit(c04e9200,c34cf100,e4c97d48) at fork_exit+0x7e > > fork_trampoline() at fork_trampoline+0x8 > > --- trap 0x1, eip =3D 0, esp =3D 0xe4c97d7c, ebp =3D 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 ;)=20 Still, the attached diff might help. It looks like we try to use Giant to=20 protect the pfslowtimo() array walking, thus we must make sure that we hold= =20 Giant long enough while we set things up. I hope protosw_init() and therein= =20 called pr_init()s are fine with Giant hold. It'd surprise me, if not. =2D-=20 /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News --Boundary-01=_V9atBeVGf/h7x4/ Content-Type: text/x-diff; charset="iso-8859-1"; name="GIANTprotosw_init.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="GIANTprotosw_init.diff" Index: uipc_domain.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/store/mlaier/fcvs/src/sys/kern/uipc_domain.c,v retrieving revision 1.42 diff -u -r1.42 uipc_domain.c =2D-- uipc_domain.c 2 Dec 2004 15:47:15 -0000 1.42 +++ uipc_domain.c 7 Dec 2004 13:19:59 -0000 @@ -337,12 +337,12 @@ /* Copy the new struct protosw over the spacer. */ bcopy(npr, fpr, sizeof(*fpr)); =20 =2D /* Job is done, no more protection required. */ =2D mtx_unlock(&Giant); =2D /* Initialize and activate the protocol. */ protosw_init(fpr); =20 + /* Job is done, no more protection required. */ + mtx_unlock(&Giant); + return (0); } =20 --Boundary-01=_V9atBeVGf/h7x4/-- --nextPart5864589.AEktvzQOIo Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (FreeBSD) iD8DBQBBta9bXyyEoT62BG0RAhYfAJ4zMrV97Fosq4R0hSCX5AQAHYg+RACePkK1 oloCFM4hGQ54hgVpsg7C8qk= =pHRu -----END PGP SIGNATURE----- --nextPart5864589.AEktvzQOIo--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412071425.47840.max>