Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Jan 2004 11:48:24 -0500 (EST)
From:      Daniel Eischen <eischen@vigrid.com>
To:        David Xu <davidxu@freebsd.org>
Cc:        arch@freebsd.org
Subject:   Re: sigaltstack with threads
Message-ID:  <Pine.GSO.4.10.10401011138130.18629-100000@pcnet5.pcnet.com>
In-Reply-To: <3FF43B93.5060209@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 1 Jan 2004, David Xu wrote:

> Doug Rabson wrote:
> > I think that if its supported at all in threaded programs, it must be
> > per-thread state otherwise you can't prevent two different threads
> > colliding on the same signal stack. I can't quite see how this maps to
> > KSE/KSEG since I only have the most hazy model of that stuff in my head
> > right now.
> > 
> > Anyway, I've worked around things by not setting SA_ONSTACK for the
> > handlers that I want to run on the thread stack.
> > 
> > 
> I have worked out a patch to support per-thread sigaltstack() state,
> in most cases, it is just a literally replacement.
> 
> http://people.freebsd.org/~davidxu/kse/kern_sigaltstack.diffs

Looks good, but I have a question.  You removed the proc lock
in kern_sig.c:osigstack() and kern_sig.c:kern_sigaltstack().
What prevents a signal from being sent to the current thread
while it is mucking with the altsigstack?  Is it possible for
an interrupt to swap out the current thread and have a signal
installed for it sometime later before it can complete
sigaltstack()?  Or do signals only get installed on the way
out of the kernel?

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10401011138130.18629-100000>