New nvidia drivers available
Doug Rabson
dfr at nlsystems.com
Sun Aug 15 02:24:02 PDT 2004
On Sunday 15 August 2004 09:39, Stefan Ehmann wrote:
> On Sun, 2004-08-15 at 02:56, Johan Pettersson wrote:
> > On Sat, 14 Aug 2004 19:34:24 +0100
> >
> > Doug Rabson <dfr at nlsystems.com> wrote:
> > > The latest 6113 build of the nvidia graphics drivers has just
> > > appeared
> > >
> > > on nvidia's web site. Check out
> > > http://www.nvidia.com/object/freebsd_1.0-6113.html if you are
> > > currently using the nvidia proprietary drivers. This driver works
> > > nicely on FreeBSD-current and while this version is not
> > > thread-safe, it does not conflict with libpthread or libthr's use
> > > of %gs so you don't have to map everything down to libc_r any
> > > more :-).
> > >
> > > There will be a thread-safe driver available for FreeBSD-current
> > > sometime after I commit the pthread parts of the TLS support
> > > code.
> >
> > Im running the new driver on a recent -CURRENT and xorg 6.7.0. When
> > starting zsnes I get this:
> >
> > beard ~> zsnes
> > Fatal error 'Exceeded maximum lock level' at line 261 in file
> > /usr/src/lib/libpthread/thread/thr_cancel.c (errno = 0) Bus error
> > (core dumped)
> > beard ~>
>
> 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_kern.c
===================================================================
RCS file: /home/ncvs/src/lib/libpthread/thread/thr_kern.c,v
retrieving revision 1.109
diff -u -r1.109 thr_kern.c
--- thr_kern.c 7 Aug 2004 15:15:38 -0000 1.109
+++ thr_kern.c 8 Aug 2004 09:57:55 -0000
@@ -2382,7 +2382,7 @@
if ((thread == NULL) &&
((thread = malloc(sizeof(struct pthread))) != NULL)) {
bzero(thread, sizeof(struct pthread));
- if ((thread->tcb = _tcb_ctor(thread)) == NULL) {
+ if ((thread->tcb = _tcb_ctor(thread, curthread == NULL)) == NULL) {
free(thread);
thread = NULL;
} else {
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();
_thr_cancel_enter(curthread);
/* Check if the file is being created: */
More information about the freebsd-current
mailing list