sigaltstack with threads

Daniel Eischen eischen at vigrid.com
Thu Jan 1 08:48:26 PST 2004


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



More information about the freebsd-arch mailing list