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