Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Oct 2006 11:45:47 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/kern kern_sig.c
Message-ID:  <200610231145.48005.jhb@freebsd.org>
In-Reply-To: <200610210858.04180.davidxu@freebsd.org>
References:  <200610201619.k9KGJLZH076566@repoman.freebsd.org> <200610210858.04180.davidxu@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 20 October 2006 20:58, David Xu wrote:
> On Saturday 21 October 2006 00:19, John Baldwin wrote:
> > jhb         2006-10-20 16:19:21 UTC
> >
> >   FreeBSD src repository
> >
> >   Modified files:
> >     sys/kern             kern_sig.c
> >   Log:
> >   Remove the check that prevented signals from being delivered to exiting
> >   processes.  It was originally added back when support for Linux threads
> >   (and thus shared sigacts objects) was added, but no one knows why.  My
> >   guess is that at some point during the Linux threads patches, the 
sigacts
> >   object was torn down during exit1(), so this check was added to prevent
> >   a panic for that race.  However, the stuff that was actually committed 
to
> >   the tree doesn't teardown sigacts until wait() making the above race
> > moot. Re-allowing signals here lets one interrupt a NFS request during
> > process teardown (such as closing descriptors) on an interruptible mount.
> >
> >   Requested by:   kib (long time ago)
> >   MFC after:      1 week
> >
> >   Revision  Changes    Path
> >   1.333     +1 -3      src/sys/kern/kern_sig.c
> This commit opens a window that may cause memory leak, since we have
> signal queue in -CURRENT now, signal queue uses memory, before this
> change, the P_WEXIT will prevents new signal to be queued, after the
> flag is set in kern_exit, we call signqueue_flush to free memory. I think
> we should move sigqueue_flush down to a safe point where the
> PROC lock is no longer unlocked or move it to a place after p_state is set
> to PRS_ZOMBIE.

Or just free it during wait() when most other things about a process are
freed (sigacts, limits, etc.).

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610231145.48005.jhb>