First draft: rewrite of {get|set|swap}context(3)
Daniel Eischen
eischen at vigrid.com
Sun Aug 17 20:30:23 PDT 2003
On Sun, 17 Aug 2003, Daniel Eischen wrote:
> On Sun, 17 Aug 2003, Marcel Moolenaar wrote:
>
> > On Mon, Aug 18, 2003 at 07:34:21AM +0800, David Xu wrote:
> > > >
> > > > > I think it should be UCF_NOSIGMASK. But for libkse, we really needn't
> > > > > this kind of hack, because M:N thread in kernel always masks all signals,
> > > > > you can always SIGFILLSET(&uc.uc_sigmask) before call set_context.
> > > >
> > > > I tried this, but it didn't fix mutex_d.
> > >
> > > I can pass mutex_d if gettimeofday does not return -1, but it is strange
> > > that gettimeofday can return -1 and errno is EFAULT.
> >
> > The copyout() is probably failing or we're not restoring the
> > return registers properly.
> >
> > > so line 414 of mutex_d.c is asserted:
> > > assert (gettimeofday (&tv2, NULL) == 0);
> >
> > Yup. That's what I'm seeing too.
>
> Hmm, that's not what I see.
Actually, I do see that also now. I also see:
Assertion failed: (pthread_mutex_destroy (&m[i]) == 0), function
mutex_prioinherit_test, file mutex_d.c, line 1425.
and
Fatal error 'Thread has returned from _thread_switch' at line 1150 in file
/freefall/d/home/deischen/current/src/lib/libpthread/thread/thr_kern.c (errno =
0)
I also think I killed pluto1 again (just by running mutex_d).
--
Dan Eischen
More information about the freebsd-threads
mailing list