New nvidia drivers available
Doug Rabson
dfr at nlsystems.com
Sun Aug 15 06:58:34 PDT 2004
On Sunday 15 August 2004 14:47, Daniel Eischen wrote:
> On Sun, 15 Aug 2004, Doug Rabson wrote:
> > > Same error message here when starting neverball. If I map
> > > libpthread->libc_r it's working again.
> > >
> > > xawtv also stopped working. Fortunately setting -xvport manually
> > > did fix that.
> >
> > This might be because libGL calls libpthread's version of open()
> > before libpthread has initialised properly. This patch might fix it
> > - it fixes neverball's map compiler for me but I haven't actually
> > run neverball itself.
> >
> > Index: thr_open.c
> > ===================================================================
> > RCS file: /home/ncvs/src/lib/libpthread/thread/thr_open.c,v
> > retrieving revision 1.16
> > diff -u -r1.16 thr_open.c
> > --- thr_open.c 9 Dec 2003 02:20:56 -0000 1.16
> > +++ thr_open.c 15 Aug 2004 09:19:42 -0000
> > @@ -45,11 +45,15 @@
> > int
> > __open(const char *path, int flags,...)
> > {
> > - struct pthread *curthread = _get_curthread();
> > + struct pthread *curthread;
> > int ret;
> > int mode = 0;
> > va_list ap;
> >
> > + if (_thr_initial == NULL)
> > + _libpthread_init(NULL);
> > +
> > + curthread = _get_curthread();
>
> I thought the C++ style constructor in thr_autoinit.c is supposed
> to take care of things like this?
The problem is that there is no particular ordering for constructors. In
the case with neverball, the C++ constructor in libGL which initialises
OpenGL ran first and quite reasonably tried to call open(2). This was
intercepted by libpthread, which hadn't yet had its constructor called.
More information about the freebsd-current
mailing list