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 <[EMAIL PROTECTED]> -- 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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message