Subject: Re: ACPI and invalid devices
To: Todd Kover <kovert@omniscient.com>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: port-amd64
Date: 04/08/2007 23:36:57
On Sun, Apr 01, 2007 at 10:12:46PM +0200, Manuel Bouyer wrote:
> On Fri, Mar 30, 2007 at 02:50:08PM -0400, Todd Kover wrote:
> > db{0}> trace 
> > cpu_Debugger(c097fca3,c0b927b4,c0b927a8,c048c525,e) at netbsd:cpu_Debugger+0x4
> > panic(c09555a4,c38c0480,c0b927d8,c0464b1f,c0a9ef82) at netbsd:panic+0x155
> > free(c38c0480,c0a4ca00,c0b92858,c051fd1c,c38c0480) at netbsd:free+0x1de
> > AcpiOsFree(c38c0480,c0a014a0,2,c3db1f20,c3db1f20) at netbsd:AcpiOsFree+0x1a
> > mpacpi_pcibus_cb(c3db1660,2,c3d0f300,0,1000000) at netbsd:mpacpi_pcibus_cb+0xfc
> > AcpiNsWalkNamespace(6,c3db1e00,64,1,c051fc20) at netbsd:AcpiNsWalkNamespace+0xde
> > 
> > AcpiWalkNamespace(6,c3db1e00,64,c051fc20,c3d0f300) at netbsd:AcpiWalkNamespace+0
> > x7e
> > mpacpi_find_interrupts(c3d0f300,43b8c9,18,c3d0f358,c3d0f300) at netbsd:mpacpi_fi
> > nd_interrupts+0x789
> > acpi_md_callback(c3d0f300,c076eea0,c3d0f358,c38c0f10,1) at netbsd:acpi_md_callba
> > ck+0x67
> > acpi_attach(c38a4f80,c3d0f300,c0b92b3c,0,c0b92b3c) at netbsd:acpi_attach+0x176
> > config_attach_loc(c38a4f80,c09f5480,0,c0b92b3c,0) at netbsd:config_attach_loc+0x
> > 156
> > config_found_ia(c38a4f80,c093e296,c0b92b3c,0,c3821f40) at netbsd:config_found_ia
> > +0x32
> > mainbus_attach(0,c38a4f80,0,c047f6be,c093d799) at netbsd:mainbus_attach+0x1c1
> > config_attach_loc(0,c09f3db8,0,0,0) at netbsd:config_attach_loc+0x156
> > config_attach(0,c09f3db8,0,0,c0b8f010) at netbsd:config_attach+0x2c
> > config_rootfound(c093d799,0,c0b92c28,c0480ebf,c0a020a0) at netbsd:config_rootfou
> > nd+0x44    
> > cpu_configure(c0a020a0,a,0,0,c0aa44f0) at netbsd:cpu_configure+0x27
> > configure(c0aa0d80,1,0,0,ffff) at netbsd:configure+0x2f
> > main(fbff,c01002d2,0,0,0) at netbsd:main+0x115
> 
> Well, it works fine for me on a pe2950, with both i386 and amd64 GENERIC
> kernels. Also, reading the code I have no clues how the double-free
> could happen.

I consistenly forgets that GENERIC doens't have DIAGNOSTIC any more.
I could reproduce it with a GENERIC+DEBUG+DIAGNOSTIC kernel, and the version
I commited is fixed.
thanks for testing it !

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--