From owner-freebsd-current@FreeBSD.ORG Mon Apr 26 11:18:58 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AF92116A4CE for ; Mon, 26 Apr 2004 11:18:58 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5CB1A43D49 for ; Mon, 26 Apr 2004 11:18:58 -0700 (PDT) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.10/8.12.1) with ESMTP id i3QIIvQk021886; Mon, 26 Apr 2004 14:18:57 -0400 (EDT) Date: Mon, 26 Apr 2004 14:18:57 -0400 (EDT) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: Gavin Atkinson In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-current@freebsd.org Subject: Re: panic: Exit: Single threading fouled up X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 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: Mon, 26 Apr 2004 18:18:58 -0000 On Mon, 26 Apr 2004, Daniel Eischen wrote: > On Mon, 26 Apr 2004, Gavin Atkinson wrote: > > > > > Hi, > > > > I've seen this panic twice now, once on a heavily loaded UP machine > > running gnome at the time, and once on an SMP (hyperthreaded) machine > > which was mostly idle as it was shutting down. Both running with ULE. > [ ... ] > > > > Unfortunately I have been unable to get a dump on either machine. Sadly, > > it's not not reproducible. > > There looks to be a missing PROC_UNLOCK in kern/kern_sig.c::sigexit(). > > Does this patch help any? Nevermind. coredump() drops the proc lock. There does look to be a couple ways out of coredump() without releasing GIANT, though. if (vn_start_write(vp, &mp, V_NOWAIT) != 0) { lf.l_type = F_UNLCK; if (locked) VOP_ADVLOCK(vp, (caddr_t)p, F_UNLCK, &lf, F_FLOCK); if ((error = vn_close(vp, FWRITE, cred, td)) != 0) -> return (error); if ((error = vn_start_write(NULL, &mp, V_XSLEEP | PCATCH)) != 0) -> return (error); goto restart; } -- Dan Eischen