Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Oct 2006 10:48:56 -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_exit.c
Message-ID:  <200610251048.57097.jhb@freebsd.org>
In-Reply-To: <200610250654.11455.davidxu@freebsd.org>
References:  <200610212359.k9LNxF2P014387@repoman.freebsd.org> <200610241430.12149.jhb@freebsd.org> <200610250654.11455.davidxu@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 24 October 2006 18:54, David Xu wrote:
> On Wednesday 25 October 2006 02:30, John Baldwin wrote:
> > On Monday 23 October 2006 18:47, David Xu wrote:
> > > On Monday 23 October 2006 23:33, John Baldwin wrote:
> > > > On Saturday 21 October 2006 19:59, 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.
> > > >
> > > > Is there any reason to not just harvest it in wait() instead?
> > >
> > > I prefer to free it earlier rather than delaying it if I can.
> >
> > But we already do the free'ing "later" (wait() really isnt' all that later
> > than exit1() for most processes) for sigacts, limits, etc.  It would seem
> > that sigqueue and sigacts would have nearly identical lifetimes.
> 
> But if system is under heavily memory loaded, doesn't freeing it earlier 
make
> it better ? sigqueue does not have safe lifetime as sigacts, every thread
> has it, we check signal queue leak in thread_exit(), if you move the
> sigqueue_flush into wait1, then that code also has to  be adjusted,
> because now not every thread will free the memory when it is exited,
> they no long have consistent behavior.

If it works as it is now, then it is fine.  Forgot that sigqueue was
per-thread rather than per-process.

-- 
John Baldwin



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