PS_BLOCKED
Daniel Eischen
eischen at pcnet1.pcnet.com
Sun Apr 6 08:05:28 PDT 2003
On Sun, 6 Apr 2003, Daniel Eischen wrote:
> On Sun, 6 Apr 2003, David Xu wrote:
> >
> > ----- Original Message -----
> > From: "Daniel Eischen" <eischen at pcnet1.pcnet.com>
> > To: "DavidXu" <davidxu at freebsd.org>
> > Cc: <freebsd-threads at freebsd.org>
> > Sent: Sunday, April 06, 2003 2:40 PM
> > Subject: Re: PS_BLOCKED
> >
> > > I've still got one bug I am trying to hunt down with
> > > signals -- the sigwait test fails. Process (kill) signals
> > > don't seem to wakeup threads in sigwait(). I'm not sure
> > > if it is a kernel bug or not, but I suspect it's
> > > something I'm doing.
> > >
> >
> > I don't know if Jeff's signal change in kernel affects your code,
> > but signals lost problem is still not fixed, a thread exports its
> > context and exits would lost signals dispatched to it, even the
> > signals is not for the thread, but for process.
>
> I'll do some more debugging today and see if it is in the
> UTS or the kernel.
I think there is a problem in the kernel; probably Jeff's changes
that broke it.
When the UTS gets a signal (in k_mbx.km_sigscaught), the signal
mask in the kernel is never cleared. The UTS only ever gets
one signal. If I use __sys_sigprocmask() to clear the kernel
signal mask after the UTS receives the signal(s), then everything
works and the sigwait test passes.
I'm not sure what we should do. The UTS is currently installing
signal handlers with all signals masked (act.sa_mask). We could
clear this mask and perhaps solve the problem that way. But when
there are multiple (kernel) threads each with its own mask and
Jeff's recent changes, there are other problems I think.
--
Dan Eischen
More information about the freebsd-threads
mailing list