Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Nov 2012 00:55:36 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Stefan Farfeleder <stefanf@FreeBSD.org>
Cc:        freebsd-acpi@FreeBSD.org
Subject:   Re: ACPI panic
Message-ID:  <50AC0A68.8070906@FreeBSD.org>
In-Reply-To: <20121120103522.GB2012@mole.fafoe.narf.at>
References:  <20121120103522.GB2012@mole.fafoe.narf.at>

next in thread | previous in thread | raw e-mail | index | archive | help
on 20/11/2012 12:35 Stefan Farfeleder said the following:
> Hi,
> 
> today I got the following panic on booting. The error seems to be some
> kind of race condition, as the same kernel booted fine before and
> afterwards. This is current, r243234.
> 
> Any additional information required to debug/fix this?
[snip]

This indeed looks like a heisenbug that happens to FreeBSD users now and then
(google for AcpiOsAcquireObject panic).
I am trying a verify a certain theory... just on the chance that this issue
happens again, could you please try the following debugging patch?

Index: sys/contrib/dev/acpica/components/utilities/utdelete.c
===================================================================
--- sys/contrib/dev/acpica/components/utilities/utdelete.c	(revision 243265)
+++ sys/contrib/dev/acpica/components/utilities/utdelete.c	(working copy)
@@ -441,7 +441,7 @@
                 "Obj %p Refs=%X, can't decrement! (Set to 0)\n",
                 Object, NewCount));

-            NewCount = 0;
+            NewCount = *(volatile UINT16*)NULL;
         }
         else
         {


I hope that this compiles.  The point is to induce a panic sooner rather than later.


> Fatal trap 12: page fault while in kernel mode
> cpuid = 1; apic id = 01
> fault virtual address	= 0x10116
> fault code		= supervisor read data, page not present
> instruction pointer	= 0x20:0xffffffff802b5820
> stack pointer	        = 0x28:0xffffff811fe4f490
> frame pointer	        = 0x28:0xffffff811fe4f4c0
> code segment		= base 0x0, limit 0xfffff, type 0x1b
> 			= DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags	= interrupt enabled, resume, IOPL = 0
> current process		= 52 (sysctl)
> 
> Reading symbols from /boot/kernel/if_iwn.ko...Reading symbols from /boot/kernel/if_iwn.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/if_iwn.ko
> Reading symbols from /boot/kernel/iwn5000fw.ko...Reading symbols from /boot/kernel/iwn5000fw.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/iwn5000fw.ko
> Reading symbols from /boot/modules/nvidia.ko...done.
> Loaded symbols for /boot/modules/nvidia.ko
> Reading symbols from /boot/kernel/linux.ko...Reading symbols from /boot/kernel/linux.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/linux.ko
> #0  doadump (textdump=0) at pcpu.h:229
> 229	pcpu.h: No such file or directory.
> 	in pcpu.h
> (kgdb) #0  doadump (textdump=0) at pcpu.h:229
> #1  0xffffffff802bec2e in db_dump (dummy=<value optimized out>, dummy2=0, 
>     dummy3=0, dummy4=0x0) at /usr/src/sys/ddb/db_command.c:543
> #2  0xffffffff802be7f4 in db_command (last_cmdp=<value optimized out>, 
>     cmd_table=<value optimized out>, dopager=1)
>     at /usr/src/sys/ddb/db_command.c:449
> #3  0xffffffff802be4e2 in db_command_loop ()
>     at /usr/src/sys/ddb/db_command.c:502
> #4  0xffffffff802c0dc0 in db_trap (type=<value optimized out>, code=0)
>     at /usr/src/sys/ddb/db_main.c:231
> #5  0xffffffff804c15de in kdb_trap (type=12, code=0, tf=<value optimized out>)
>     at /usr/src/sys/kern/subr_kdb.c:654
> #6  0xffffffff806ee845 in trap_fatal (frame=0xffffff811fe4f3e0, 
>     eva=<value optimized out>) at /usr/src/sys/amd64/amd64/trap.c:867
> #7  0xffffffff806eeae6 in trap_pfault (frame=0x0, usermode=0)
>     at /usr/src/sys/amd64/amd64/trap.c:698
> #8  0xffffffff806ee1fc in trap (frame=0xffffff811fe4f3e0)
>     at /usr/src/sys/amd64/amd64/trap.c:463
> #9  0xffffffff806d8dc3 in calltrap () at /tmp/exception-EAhiLL.s:142
> #10 0xffffffff802b5820 in AcpiOsAcquireObject (Cache=0xfffffe000292a700)
>     at /usr/src/sys/contrib/dev/acpica/components/utilities/utcache.c:310
> #11 0xffffffff802b8441 in AcpiUtCreateInternalObjectDbg (
>     ModuleName=0xffffffff8074a2f6 "dsutils", LineNumber=703, ComponentId=64, 
>     Type=1)
>     at /usr/src/sys/contrib/dev/acpica/components/utilities/utobject.c:437
> #12 0xffffffff8029bf65 in AcpiDsCreateOperand (WalkState=0xfffffe000618b800, 
>     Arg=0xfffffe00041b3bc0, ArgIndex=<value optimized out>)
>     at /usr/src/sys/contrib/dev/acpica/components/dispatcher/dsutils.c:703
> #13 0xffffffff8029c062 in AcpiDsCreateOperands (WalkState=0xfffffe000618b800, 
>     FirstArg=<value optimized out>)
>     at /usr/src/sys/contrib/dev/acpica/components/dispatcher/dsutils.c:798
> #14 0xffffffff8029c507 in AcpiDsExecEndOp (WalkState=0xfffffe000618b800)
>     at /usr/src/sys/contrib/dev/acpica/components/dispatcher/dswexec.c:449
> #15 0xffffffff802afe04 in AcpiPsParseLoop (WalkState=0xfffffe000618b800)
>     at /usr/src/sys/contrib/dev/acpica/components/parser/psloop.c:1276
> #16 0xffffffff802b068d in AcpiPsParseAml (WalkState=<value optimized out>)
>     at /usr/src/sys/contrib/dev/acpica/components/parser/psparse.c:525
> #17 0xffffffff802b11e7 in AcpiPsExecuteMethod (Info=0xfffffe0006191c80)
>     at /usr/src/sys/contrib/dev/acpica/components/parser/psxface.c:368
> #18 0xffffffff802aac16 in AcpiNsEvaluate (Info=0xfffffe0006191c80)
>     at /usr/src/sys/contrib/dev/acpica/components/namespace/nseval.c:193
> #19 0xffffffff802add48 in AcpiEvaluateObject (Handle=0xfffffe0002a09280, 
>     Pathname=<value optimized out>, ExternalParams=<value optimized out>, 
>     ReturnBuffer=0xffffff811fe4f7c0)
>     at /usr/src/sys/contrib/dev/acpica/components/namespace/nsxfeval.c:289
> #20 0xffffffff802ce378 in acpi_cmbat_get_bst (arg=0xfffffe0002a3d200)
>     at /usr/src/sys/dev/acpica/acpi_cmbat.c:258
> #21 0xffffffff802ce202 in acpi_cmbat_bst (dev=0xfffffe0002a3d200, 
>     bstp=0xfffffe0006125300) at /usr/src/sys/dev/acpica/acpi_cmbat.c:419
> #22 0xffffffff802cd2ef in acpi_battery_get_battinfo (dev=0x0, 
>     battinfo=0xffffffff80a5d380) at acpi_if.h:142
> #23 0xffffffff802cd91f in acpi_battery_sysctl (oidp=0xfffffe000418c500, 
>     arg1=<value optimized out>, arg2=64, req=0xffffff811fe4f968)
>     at /usr/src/sys/dev/acpica/acpi_battery.c:428
> #24 0xffffffff80496c8c in sysctl_root (arg1=<value optimized out>, 
>     arg2=<value optimized out>) at /usr/src/sys/kern/kern_sysctl.c:1513
> #25 0xffffffff80497248 in userland_sysctl (td=<value optimized out>, 
>     name=0xffffff811fe4fa30, namelen=<value optimized out>, 
>     old=<value optimized out>, oldlenp=<value optimized out>, 
>     inkernel=<value optimized out>, new=<value optimized out>, 
>     newlen=<value optimized out>, retval=<value optimized out>, 
>     flags=535099728) at /usr/src/sys/kern/kern_sysctl.c:1623
> #26 0xffffffff80497034 in sys___sysctl (td=0xfffffe00041a5900, 
>     uap=0xffffff811fe4fb40) at /usr/src/sys/kern/kern_sysctl.c:1549
> #27 0xffffffff806eef0e in amd64_syscall (td=0xfffffe00041a5900, traced=0)
>     at subr_syscall.c:135
> #28 0xffffffff806d90ab in Xfast_syscall () at /tmp/exception-EAhiLL.s:292
> #29 0x000000080093456a in ?? ()
> Previous frame inner to this frame (corrupt stack?)
> Current language:  auto; currently minimal
> (kgdb) 
> 


-- 
Andriy Gapon



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