Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Nov 2000 09:09:48 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Andrea Campi <a.campi@inet.it>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: [jhb@FreeBSD.org: RE: Panic in -current]
Message-ID:  <XFMail.001129090948.jhb@FreeBSD.org>
In-Reply-To: <20001129142056.A97794@inet.it>

next in thread | previous in thread | raw e-mail | index | archive | help

On 29-Nov-00 Andrea Campi wrote:
>> 
>> We want mtxd_file and mtxd_line.  If you look at the output of the last
>> command, it will probably look something like this:
> 
> ../../kern/kern_timeout.c, line 139

Hmm, and the failed assertion was:

panic: mutex Giant owned at ../../kern/kern_intr.c:238

So it looks like we aren't releasing Giant, or that one of the callouts we
called is getting giant but not releasing it.  In sys/kern/kern_timeout.c, add
in this: (at around line 139)

                                if (!(c_flags & CALLOUT_MPSAFE))
                                        mtx_enter(&Giant, MTX_DEF);
                                splx(s);
                                c_func(c_arg);
                                s = splhigh();
                                if (!(c_flags & CALLOUT_MPSAFE))
                                        mtx_exit(&Giant, MTX_DEF);
                                /* add if statement below this */
                                if (mtx_owned(&Giant)) {
printf("Bad callout handler: c_func = %p, c_arg = %p, c_flags = %d\n",
        c_func, c_arg, c_flags);
panic("bad callout");
                                }
Then when it panics write down the values that get printed out.  Next,
do 'nm /sys/compile/MYKERNEL/kernel.debug | sort' and look for the function
whose address matches the c_func address printed out, then send this info back
please. :)

> Hope it helps,
>       Andrea

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.001129090948.jhb>