From owner-freebsd-acpi@FreeBSD.ORG Thu Nov 3 02:47:16 2005 Return-Path: X-Original-To: freebsd-acpi@freebsd.org Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A3E7116A41F for ; Thu, 3 Nov 2005 02:47:16 +0000 (GMT) (envelope-from haro@h4.dion.ne.jp) Received: from smtp1.dcns.ne.jp (smtp1.dcns.ne.jp [203.178.100.134]) by mx1.FreeBSD.org (Postfix) with SMTP id 2189143D53 for ; Thu, 3 Nov 2005 02:47:13 +0000 (GMT) (envelope-from haro@h4.dion.ne.jp) Received: (qmail 22714 invoked by uid 503); 3 Nov 2005 11:47:12 +0900 Received: from unknown (HELO localhost) (211.10.184.118) by smtp1.dcns.ne.jp with SMTP; 3 Nov 2005 11:47:12 +0900 Date: Thu, 03 Nov 2005 11:47:12 +0900 (JST) Message-Id: <20051103.114712.74756421.haro@h4.dion.ne.jp> To: keramida@linux.gr From: Munehiro Matsuda In-Reply-To: <20051103020902.GA29536@flame.pc> References: <436961FD.3040605@root.org> <20051103014740.GA1586@flame.pc> <20051103020902.GA29536@flame.pc> X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org, freebsd-current@freebsd.org, robert.moore@intel.com, jkim@freebsd.org Subject: Re: Panic on boot with new ACPI-CA X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Nov 2005 02:47:16 -0000 From: Giorgos Keramidas Date: Thu, 3 Nov 2005 04:09:02 +0200 ::On 2005-11-03 03:47, Giorgos Keramidas wrote: ::> On 2005-11-02 17:03, Nate Lawson wrote: ::> > As I mentioned to Jung-uk, the problem is likely an error in ::> > acpi-ca modifying memory after it has freed it. The way to ::> > track this down is to enable memguard(9). See the man page for ::> > info. You need to add options DEBUG_MEMGUARD to your kernel, ::> > set the malloc type to watch to M_ACPICA, and rebuild your ::> > kernel and modules. Memguard sets page permissions so we can ::> > catch the culprit who is modifying the memory. ::> ::> This is exactly the messgae printed on my console at panic time ::> -- of memory modified after free. I'm building a kernel with ::> MEMGUARD now, but it's probably going to be a bit hard to get a ::> kernel dump, because the panic happens before disks are available ::> and I don't have a serial console here. :: ::Does the following look ok for using memguard(9) with M_ACPICA? :: ::%%% begin acpica-memguard.patch ::Index: kern/kern_malloc.c ::=================================================================== ::RCS file: /home/ncvs/src/sys/kern/kern_malloc.c,v ::retrieving revision 1.148 ::diff -u -r1.148 kern_malloc.c ::--- kern/kern_malloc.c 20 Oct 2005 21:28:31 -0000 1.148 ::+++ kern/kern_malloc.c 3 Nov 2005 02:04:02 -0000 ::@@ -62,6 +62,8 @@ :: #include :: #include :: ::+MALLOC_DECLARE(M_ACPICA); ::+ :: #ifdef DEBUG_MEMGUARD :: #include :: #endif ::@@ -305,7 +307,7 @@ :: :: #ifdef DEBUG_MEMGUARD :: /* XXX CHANGEME! */ ::- if (mtp == M_SUBPROC) ::+ if (mtp == M_ACPICA) :: return memguard_alloc(size, flags); :: #endif :: ::%%% end acpica-memguard.patch :: Hi, There are few more "CHANGEME!" places. I used following: @@ -64,6 +64,7 @@ #ifdef DEBUG_MEMGUARD #include +MALLOC_DECLARE(M_ACPICA); #endif #if defined(INVARIANTS) && defined(__i386__) @@ -305,7 +306,7 @@ #ifdef DEBUG_MEMGUARD /* XXX CHANGEME! */ - if (mtp == M_SUBPROC) + if (mtp == M_ACPICA) return memguard_alloc(size, flags); #endif @@ -360,7 +361,7 @@ #ifdef DEBUG_MEMGUARD /* XXX CHANGEME! */ - if (mtp == M_SUBPROC) { + if (mtp == M_ACPICA) { memguard_free(addr); return; } @@ -424,7 +425,7 @@ #ifdef DEBUG_MEMGUARD /* XXX: CHANGEME! */ -if (mtp == M_SUBPROC) { +if (mtp == M_ACPICA) { slab = NULL; alloc = size; } else { =------------------------------------------------------------------------------ _ _ Munehiro (haro) Matsuda -|- /_\ |_|_| Internet Solution Dept., KGT Inc. /|\ |_| |_|_| 2-8-8 Shinjuku Shinjuku-ku Tokyo 160-0022, Japan Tel: +81-3-3225-0767 Fax: +81-3-3225-0740