From owner-cvs-src@FreeBSD.ORG Sun Oct 22 00:14:15 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7C7D116A407; Sun, 22 Oct 2006 00:14:15 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org (adsl-75-1-14-242.dsl.scrm01.sbcglobal.net [75.1.14.242]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3B03B43D49; Sun, 22 Oct 2006 00:14:14 +0000 (GMT) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.13.3/8.13.3) with ESMTP id k9M0E5mG061752; Sat, 21 Oct 2006 17:14:09 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Message-Id: <200610220014.k9M0E5mG061752@gw.catspoiler.org> Date: Sat, 21 Oct 2006 17:14:05 -0700 (PDT) From: Don Lewis To: davidxu@FreeBSD.org In-Reply-To: <200610212359.k9LNxF2P014387@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern kern_exit.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Oct 2006 00:14:15 -0000 On 21 Oct, David Xu wrote: > davidxu 2006-10-21 23:59:15 UTC > > FreeBSD src repository > > Modified files: > sys/kern kern_exit.c > Log: > Since revision 1.333 of kern_sig.c no longer uses P_WEXIT, the change > opened a race window which can cause memory leak in signal queue. > Here we free memory for signal queue when process state is set to > PRS_ZOMBIE. > > Revision Changes Path > 1.291 +8 -2 src/sys/kern/kern_exit.c I wonder if the earlier change is what broke portupgrade after I upgraded from an August 31st version of current to yesterday's version. The symptoms were random processes dying from SIGHUP. It was easy to reproduce by just going to a port directory and running script foo make clean a few times. I'd randomly see make complain about a non-zero exit status from uname or some other sub-process. I tracked the problem back to the SIGHUP bit being set in td2's sigqueue in fork1(). As a workaround, I added a call to sigqueue_init() where td2 gets bzero'ed. Disappearing back into the void ...