Hi Brian,

the following bug was reported against the mesa 7.0.3 package in Debian.
The relevant code doesn't seem to have changed in master.  Could you
take a look?

Thanks,
Julien

On Tue, Jul  7, 2009 at 17:50:06 +0100, roger wrote:

> It appears that mesa 7.0.3, crashes with some application in amd64 mode.
> 
> Weh I traced this into mesa I found the wrapper was only fetching the
> dispatch table thru _gl_DispatchTSD - although it had not been setup correctly
> - (The magic was 0) . 
> 
> I compared this gdb trace to the same application which does not crash on
> i386 and found that this _gl_DispatchTSD was also not set up on entry to the
> wrapper in i386 mode.
> 
> Comparing the i386 code and the dispatch documentation shows that the
> wrapper ought to be testing _glapi_Dispatch for NULL before getting the
> dispatch table from the TSD info.
> 
> The attached patch changes the wrapper generator script to create code
> which this extra check - and avoids unnecessary calls to pthread_getspecific()
> 
> Obviously this root cause of the segv could be an OpenGL programming
> issue but it is confusing that the behaviour changes between architectures.
> 
> 
> --- a/src/mesa/glapi/gl_x86-64_asm.py 2009-07-06 20:51:52.000000000 +0100
> +++ b/src/mesa/glapi/gl_x86-64_asm.py 2009-07-06 22:17:59.000000000 +0100
> @@ -166,7 +166,11 @@
>               print ''
>               print '\t.p2align\t4,,15'
>               print '_x86_64_get_dispatch:'
> -             print '\tmovq\t_gl_DispatchTSD(%rip), %rdi'
> +             print '\tmovq\t_glapi_Dispatch(%rip), %rax'
> +             print '\ttestq\t%rax,%rax'
> +             print '\tje\t1f'
> +             print '\tret'
> +             print '1:\tmovq\t_gl_DispatchTSD(%rip), %rdi'
>               print '\tjmp\tpthread_getspeci...@plt'
>               print ''
>               print '#elif defined(THREADS)'
> 
> 



-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to