Date: Thu, 30 Sep 2004 01:16:30 -0400 (EDT) From: Robert Watson <rwatson@freebsd.org> To: Dikshie <dikshie@ppk.itb.ac.id> Cc: current@freebsd.org Subject: Re: -BETA6 panic with xorp multicast routing daemon Message-ID: <Pine.NEB.3.96L.1040930005744.42292F-100000@fledge.watson.org> In-Reply-To: <20040930044835.GA911@ppk.itb.ac.id>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 30 Sep 2004, Dikshie wrote:
> I got my -BETA6 panic when run xorp routing daemon.
> Panic: mutex Giant not owned at /usr/src/sys/netinet/ip_mroute.c:2672
>
> I've included:
> options MROUTING
> options PIM
> for multicast purpose and:
>
> options KDB
> options KDB_TRACE
> options DDB #Enable the kernel debugger
> options DDB_NUMSYM
> options GDB
>
> for debugging. but my box didnt save core to /var/crash.
> any suggestions ?
>From the nature of the panic, it sounds like you're running with
NET_WITH_GIANT, debug.mpsafenet=0 in loader.conf, or that the setting has
been forced by running with a kernel component that relies on Giant over
the network stack?
Try the attached patch, please.
Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
robert@fledge.watson.org Principal Research Scientist, McAfee Research
Index: ip_mroute.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_mroute.c,v
retrieving revision 1.108
diff -u -r1.108 ip_mroute.c
--- ip_mroute.c 27 Aug 2004 18:33:07 -0000 1.108
+++ ip_mroute.c 30 Sep 2004 05:00:17 -0000
@@ -598,20 +598,23 @@
static void
ip_mrouter_reset(void)
{
+ int callout_flag;
+
bzero((caddr_t)mfctable, sizeof(mfctable));
bzero((caddr_t)nexpire, sizeof(nexpire));
pim_assert = 0;
mrt_api_config = 0;
- callout_init(&expire_upcalls_ch, CALLOUT_MPSAFE);
+ callout_flag = debug_mpsafenet ? CALLOUT_MPSAFE : 0;
+ callout_init(&expire_upcalls_ch, callout_flag);
bw_upcalls_n = 0;
bzero((caddr_t)bw_meter_timers, sizeof(bw_meter_timers));
- callout_init(&bw_upcalls_ch, CALLOUT_MPSAFE);
- callout_init(&bw_meter_ch, CALLOUT_MPSAFE);
+ callout_init(&bw_upcalls_ch, callout_flag);
+ callout_init(&bw_meter_ch, callout_flag);
- callout_init(&tbf_reprocess_ch, CALLOUT_MPSAFE);
+ callout_init(&tbf_reprocess_ch, callout_flag);
}
static struct mtx mrouter_mtx; /* used to synch init/done work */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1040930005744.42292F-100000>
