sigwait() brokeness (was Re: Threads regression tests)
David Xu
davidxu at freebsd.org
Wed Jul 16 17:58:58 PDT 2003
----- Original Message -----
From: "Daniel Eischen" <eischen at vigrid.com>
To: "David Schultz" <das at freebsd.org>
Cc: "Craig Rodrigues" <rodrigc at crodrigues.org>; "David Xu" <davidxu at freebsd.org>; <freebsd-threads at freebsd.org>
Sent: Thursday, July 17, 2003 3:15 AM
Subject: sigwait() brokeness (was Re: Threads regression tests)
> On Tue, 15 Jul 2003, David Schultz wrote:
>
> > On Wed, Jul 16, 2003, David Xu wrote:
> > > Can you test my libkse patch ?
> > > http://people.freebsd.org/~davidxu/libpthread_bound.diffs
> > > If you can test the patch to make sure I don't break signal
> > > code, then I will commit this patch.
> >
> > Is there interest in incrementally building a threads-related
> > regression test suite in src/tools/regression? This would mean
> > less breakage for people who are trying to use KSE/libthr, and an
> > easy way for threads developers to be somewhat confident that
> > their changes are correct. For example, two weeks ago I was
> > tearing my hair out over a sigwait() problem that caused the
> > following program to deadlock. Since I already bothered to
> > isolate the bug, why not do the last 1% of the work and check in a
> > test so that it never comes back? Thoughts?
>
> Yes, sigwait() appears to be broken in the kernel.
> If the process is sigwait()ing on a signal set, and
> one of those signals is pending or occurs, the
> signal handler should not be invoked, especially
> if the signal is masked.
>
> The waitset is independent of the thread's signal
> mask. I think struct thread needs to grow a td_waitset
> member. If a signal arrives (or is already pending)
> and it is present in the waitset, then the thread
> should be woken up with the signal removed from the
> pending set and no signal handler installed.
>
I am working on it now.
> --
> Dan Eischen
>
> _______________________________________________
> freebsd-threads at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-threads
> To unsubscribe, send any mail to "freebsd-threads-unsubscribe at freebsd.org"
>
More information about the freebsd-threads
mailing list