From owner-freebsd-current@FreeBSD.ORG Wed Dec 20 20:28:00 2006 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C9D6216A47C for ; Wed, 20 Dec 2006 20:28:00 +0000 (UTC) (envelope-from dmitry@atlantis.dp.ua) Received: from postman.atlantis.dp.ua (postman.atlantis.dp.ua [193.108.47.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8EA6F43CA5 for ; Wed, 20 Dec 2006 20:27:58 +0000 (GMT) (envelope-from dmitry@atlantis.dp.ua) Received: from smtp.atlantis.dp.ua (smtp.atlantis.dp.ua [193.108.46.231]) by postman.atlantis.dp.ua (8.13.1/8.13.1) with ESMTP id kBKKRmiF003299; Wed, 20 Dec 2006 22:27:49 +0200 (EET) (envelope-from dmitry@atlantis.dp.ua) Date: Wed, 20 Dec 2006 22:27:48 +0200 (EET) From: Dmitry Pryanishnikov To: Kostik Belousov In-Reply-To: <20061220124032.GC23698@deviant.kiev.zoral.com.ua> Message-ID: <20061220215753.H53808@atlantis.atlantis.dp.ua> References: <20061219175917.L84683@atlantis.atlantis.dp.ua> <20061220130559.P54963@atlantis.atlantis.dp.ua> <20061220124032.GC23698@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-current@freebsd.org, Kip Macy Subject: Re: ddb(4) spoils kernel stack in CURRENT? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Dec 2006 20:28:00 -0000 Hello! On Wed, 20 Dec 2006, Kostik Belousov wrote: >>> So it looks like a regression in CURRENT vs RELENG_6 (either ddb 'spoils' >>> the stack somehow, or kgdb fails to unwind it). > > Could you further localize the problem, i.e. try to backtrace CURRENT dump Good news: I've managed to localize the bug! I'm Feeling Lucky (TM) ;) just because CURRENT on my notebook was updated approx. at 17-Dec 00:00, and it didn't manifest such a behaviour! So it was easy to identify the regression - it comes with the following commit: ----------------------------------------------------------------------- Date: Sun, 17 Dec 2006 05:07:01 +0000 (UTC) From: Kip Macy To: src-committers@freebsd.org, cvs-src@freebsd.org, cvs-all@freebsd.org Subject: cvs commit: src/sys/i386/i386 apic_vector.s exception.s local_apic.c trap.c vm86.c vm86bios.s src/sys/i386/include apicvar.h src/sys/i386/isa atpic.c atpic_vector.s icu.h kmacy 2006-12-17 05:07:01 UTC FreeBSD src repository Modified files: sys/i386/i386 apic_vector.s exception.s local_apic.c trap.c vm86.c vm86bios.s sys/i386/include apicvar.h sys/i386/isa atpic.c atpic_vector.s icu.h Log: Evidently FreeBSD has long relied on the compiler to treat structures passed by value (trap frames) as if they were in fact being passed by reference. For better or worse, this incorrect behaviour is no longer present in gcc 4.1. In this patch I convert all trapframe arguments to be explicitly pass by reference. I also remove vm86_initflags, pushing the very little work that it actually does up into vm86_prepcall. ----------------------------------------------------------------------- So kernel built from sources as of date=2006.12.17.05.00.00 gives dump with analyzable backtrace, and kernel built from sources as of date=2006.12.17.05.10.00 (which include this commit) gives dump which confuses kgdb. I believe that commit itself is correct, but kgdb contains some workaround against the old (incorrect) behaviour of the kernel, so it's the kgdb that should be fixed. Sincerely, Dmitry -- Atlantis ISP, System Administrator e-mail: dmitry@atlantis.dp.ua nic-hdl: LYNX-RIPE