Re: Panic on suspend

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Tue, 1 Mar 2005 17:03:50 -0500
On Tuesday 01 March 2005 03:30 pm, Filippo Forti wrote:
> Hi,
> I got a fully reproduceable panic while trying to suspend (to S3) on my
> laptop. FreeBSD is -CURRENT from Monday.
>
> I'm using a modified DSDT which used to work before I updated on Monday.
> dmesg from after reboot is attacched.
>
> Here comes gbd output
>
>
> Fatal trap 12: page fault while in vm86 mode
> fault virtual address	= 0x2000
> fault code				= user write, page not present
> instruction pointer		= 0xc000:0x5195
> stack pointer			= 0x0:0xfe4
> frame pointer			= 0x0:0x0
> code segment			= base 0x600005, limit 0x2, type 0x11
> 						= DPL 1, pres 0, def32 0, gran 0
> processor eflag			= interrupt enabled, resume, mv86, IOPL = 0
> current process 		= 1046 (acpiconf)
> [thread pid 1046 tid 100084]
> Stopped at 0x5159: *** error reading from address 5159 ***
>
> db> tr
> Tracing pid 1046 tid 100084 td 0xc27645c0
> (null)(ff000e2c3,f000ff53,f000ff54,f00092da) at 0x5195
> _end(ccce4fab,b638f354,3a6c5da3,ec956de5,fe6dff6c) at 0xf000ff53
>
> db> where
> Tracing pid 1046 tid 100084 td 0xc27645c0
> kdb_enter(c08d00f2,c08e69ce,c08cbfd1,c08ee7f9,2b8) at kdb_enter+0x31
> witness_checkorder(c2cc2a54,9,c08ee7f9,2b8,0) at witness_checkorder+0xc9
> _mtx_lock_flags(c2cc2a54,0,c08ee7f9,2b8,0) at _mtx_lock_flags+0x85
> trap_pfault(c0c21fa8,0,2000,c0c21fa8,2000) at trap_pfault+0xa1
> trap (0,0,0,1000,0) at trap+0x34b
> calltrap() at calltrap+0x5
> ---trap 0xc, eip = 0x5195, esp = 0xc0c21fe8, ebp = 0 ---
>
> db> next
> panic: blockable sleep lock (sleep mutex) process lock _at_
> /usr/src/sys/i386/i386/trap.c:696
> KDB: enter: panic
> After 2 instructions (0 loads, 0 stores),
> [thread 1046 tid 1000084]
> stopped at kdb_enter+0x31: ret
>
> Thanks for your help
> Filippo

Can you try this patch to get rid of the bogus witness warning:

Index: trap.c
===================================================================
RCS file: /usr/cvs/src/sys/i386/i386/trap.c,v
retrieving revision 1.270
diff -u -r1.270 trap.c
--- trap.c	16 Nov 2004 20:42:31 -0000	1.270
+++ trap.c	18 Feb 2005 15:31:37 -0000
_at__at_ -238,7 +238,7 _at__at_
 		 * to the debugger.
 		 */
 		eva = rcr2();
-		if (td->td_critnest == 0)
+		if (td->td_critnest == 0 && td->td_sleeplocks == NULL)
 			enable_intr();
 		else
 			trap_fatal(&frame, eva);


-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Tue Mar 01 2005 - 21:57:19 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:29 UTC