Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Sep 2004 13:41:47 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-current@FreeBSD.org
Cc:        Nate Lawson <nate@root.org>
Subject:   Re: panic on shutdown
Message-ID:  <200409031341.47074.jhb@FreeBSD.org>
In-Reply-To: <4138A806.9020105@mcsi.pp.ru>
References:  <4137EA5C.30606@mcsi.pp.ru> <4138A524.8080107@root.org> <4138A806.9020105@mcsi.pp.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 03 September 2004 01:21 pm, Maxim Maximov wrote:
> Nate Lawson wrote:
> > John Baldwin wrote:
> >> On Thursday 02 September 2004 11:51 pm, Maxim Maximov wrote:
> >>> Hello.
> >>>
> >>>     I just got this panic on shutdown using Power button, hand
> >>> transcribed:
> >>>
> >>> Syncing disks: <numbers>
> >>> No buffers busy after final sync
> >>> Uptime: 21m53s
> >>> Powering system off using ACPI
> >>>
> >>> panic: lock (sleep mutex) Giant not locked @
> >>> /usr/src/sys/kern/kern_timeout.c:279
> >>>
> >>> cpuid = 0
> >>> KDB: enter: panic
> >>> ACPI power-off failed - timeout
> >>>
> >>> Rebooting...
> >>> cpu_reset: called on cpu#1
> >>> cpu_reset: Stopping other CPUs
> >>>
> >>> Here it hung until I pressed Power button again. Then it shut down.
> >>
> >> Looks like the timeout/callout routine dropped Giant more than it
> >> acquired it.
> >
> > I don't see how this could be triggered by ACPI.  If you reboot the
> > system with ACPI disabled (or enabled), do you also get this message?
>
> My system can't boot with ACPI disabled.
>
> Also I want to mention that this panic is rare. I've seen it about 10
> times in 2-3 months of everyday rebooting.
>
> And by the way, the command issued to shut the system down was 'halt -p'

I would hack the timeout code to add some printf's before the 
mtx_unlock(&Giant) to dump the function pointer and argument 
if !tmtx_owned(&Giant) and then use gdb to figure out what the callout 
function was.  I.e. something like:

	if (not mpsafe) {
		if (!mtx_owned(&Giant))
			printf("func = %p, arg = %p\n", c_func, c_arg)
		mtx_unlock(&Giant);
	}

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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