From owner-freebsd-threads@FreeBSD.ORG Wed Jun 11 07:55:48 2003 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 71A9537B401 for ; Wed, 11 Jun 2003 07:55:48 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id BBFA543FBD for ; Wed, 11 Jun 2003 07:55:47 -0700 (PDT) (envelope-from eischen@pcnet.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.8/8.12.1) with ESMTP id h5BEtkNc002776; Wed, 11 Jun 2003 10:55:46 -0400 (EDT) Date: Wed, 11 Jun 2003 10:55:46 -0400 (EDT) From: Daniel Eischen To: Alexander Nedotsukov In-Reply-To: <3EE6D809.5000107@mail.ru> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: threads@freebsd.org Subject: Re: nvidia OpenGL and lib{thr,kse} related crash X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jun 2003 14:55:48 -0000 On Wed, 11 Jun 2003, Alexander Nedotsukov wrote: > Alexander Kabaev wrote: > > >On Tue, 10 Jun 2003 10:49:11 -0400 (EDT) > >Daniel Eischen wrote: > > > > > > > >>I think something is hosed on your end... pthread_key_create() > >>does not call pthread_main_np (nor vice-versa) in libkse. > >>glxinfo works fine with both libkse and libthr here. I don't > >>have any nvidia hardware. > >> > Daniel, I tought it may be not related to specific hardware. Nvidia > provides they own libGL.so.1 library wich probably may make use of > pthread stuff in way lib{kse,thr} not expected. > > >> > >> > >Alexander simply does not have debugging symbols in his libkse library. > >Otherwise his backtarce would lock differently. > > > Ok. This one with debug symbols in libkse. > > #0 _get_curthread () at /usr/src/lib/libpthread/thread/thr_kern.c:1818 > 1818 return (_ksd_curthread); > (gdb) where > #0 _get_curthread () at /usr/src/lib/libpthread/thread/thr_kern.c:1818 > #1 0x2821fba7 in _pthread_key_create (key=0x2813c220, > destructor=0x28122c90 <__nvsym15484+240>) at > /usr/src/lib/libpthread/thread/thr_spec.c:60 > #2 0x28122b58 in __nvsym15249 () from /usr/X11R6/lib/libGL.so.1 > #3 0x28052b16 in _rtld () from /usr/libexec/ld-elf.so.1 > > And this one with 'setenv __GL_SINGLE_THREADED 1' > > Loaded symbols for /usr/libexec/ld-elf.so.1 > #0 _get_curthread () at /usr/src/lib/libpthread/thread/thr_kern.c:1818 > 1818 return (_ksd_curthread); > (gdb) where > #0 _get_curthread () at /usr/src/lib/libpthread/thread/thr_kern.c:1818 > #1 0x282243f7 in _thr_rtld_set_flag (mask=1) at > /usr/src/lib/libpthread/thread/thr_rtld.c:87 > #2 0x28055f16 in rlock_acquire () from /usr/libexec/ld-elf.so.1 > #3 0x28052d4a in _rtld_bind () from /usr/libexec/ld-elf.so.1 > #4 0x28052791 in _rtld_bind_start () from /usr/libexec/ld-elf.so.1 > #5 0x28052b16 in _rtld () from /usr/libexec/ld-elf.so.1 You can try this patch, but I don't really think that's the problem. I think %gs is getting clobbered. Apply patch to libpthread/thread/thr_spec.c. -- Dan Eischen Index: thr_spec.c =================================================================== RCS file: /opt/FreeBSD/cvs/src/lib/libpthread/thread/thr_spec.c,v retrieving revision 1.19 diff -u -r1.19 thr_spec.c --- thr_spec.c 18 Apr 2003 05:04:16 -0000 1.19 +++ thr_spec.c 11 Jun 2003 14:52:49 -0000 @@ -57,7 +57,11 @@ int _pthread_key_create(pthread_key_t *key, void (*destructor) (void *)) { - struct pthread *curthread = _get_curthread(); + struct pthread *curthread; + + if (_thr_initial == NULL) + _libpthread_init(NULL); + curthread = _get_curthread(); /* Lock the key table: */ THR_LOCK_ACQUIRE(curthread, &_keytable_lock);