Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 04 Sep 2004 00:16:14 +0400
From:      Maxim Maximov <mcsi@mcsi.pp.ru>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Nate Lawson <nate@root.org>
Subject:   Re: panic on shutdown
Message-ID:  <4138D10E.4060809@mcsi.pp.ru>
In-Reply-To: <200409031341.47074.jhb@FreeBSD.org>
References:  <4137EA5C.30606@mcsi.pp.ru> <4138A524.8080107@root.org> <4138A806.9020105@mcsi.pp.ru> <200409031341.47074.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote:
> 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);
> 	}
> 

Thanks, I recompiled kernel with this code. I'll let you know if this 
yields anything..


-- 
Maxim Maximov



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