Skip site navigation (1)Skip section navigation (2)
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>