panic: mutex Giant not owned

Bruce Evans bde at zeta.org.au
Thu Mar 25 16:54:01 PST 2004


On Thu, 25 Mar 2004, John Baldwin wrote:

> On Thursday 25 March 2004 05:39 am, Lukas Ertl wrote:
> > Hi,
> >
> > I was dropped into DDB after a panic and tried to save a coredump with
> > "call doadump", which resulted in a:
> >
> > panic: mutex Giant not owned in /usr/src/sys/cam/cam_xpt.c:3970
> >
> > Second call to "doadump" succeeded, but savecore(8) couldn't save the core
> > ('bad dump header' or something like this).
>
> Cute.  I should fix mtx_assert() to just bail and not panic if panicstr is
> already set.

Er, the panic is correct.  Panic dump code must not use normal locking,
since then it won't work if it hits an unlockable lock.  panic() usually
recursively panics earlier, near the sync() in boot(), if it hits an
unlocakable lock.  Changing mtx_assert() to not panic if panicstr is
set would be worse for this than for the panic dump part, since sync()
is normal file system code that depends on normal locking for correctness.

Bruce


More information about the freebsd-current mailing list