Chia-I Wu wrote:
> On Tue, Aug 25, 2009 at 11:04:25AM +0100, Dave Airlie wrote:
>>> Old libGL.so won't load the DRI drivers compiled with this commit.  This
>>> is known, but I must admit that I forgot xserver counts as an old
>>> libGL.so...
>>>
>>> I just had a quick look at it, and I think this can be fixed by defining
>>> _glapi_SingleThreaded in xserver glx module and recompile.  No other
>>> changes are needed.  But I am wondering whether it should be fixed, or
>>> the commit should be reverted.  Any suggestion?
>> Can it be done any other way without breaking the loader API?
>> A lot of work has been put into making the loader API not need breaks
>> and not having to keep mesa and xserver in lockstep and I'd hate to throw
>> this away if there is another way.
> Maybe I can show the exact problem the commit tries to solve, to see if
> someone can come up with a better way?
> 
> The race the commit tries to solve is in
> 
> #define GET_CURRENT_CONTEXT(C) \
>   GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : 
> _glapi_get_context())
> 
> (and, similarly, GET_DISPATCH)
> 
> Say, a first thread is about to enter GET_CURRENT_CONTEXT(), and a
> second thread is created and calls _glapi_check_multithread.  Before the
> introduction of _glapi_SingleThreaded, the second thread would unset
> _glapi_Context as an indication that per-thread context should be used.
> The first thread would then call _glapi_get_context() to get per-thread
> context.
> 
> The race happens after the first thread tests _glapi_Context to be
> non-NULL and before it returns _glapi_Context.  A second thread might
> unset _glapi_Context during this period and the first thread would get
> NULL.  It will crash the application
> 

Chia, I think I'm going to revert these changes until we can fix the 
issue without an ABI break.  I'll try to look into the above problem 
later if I have time.

-Biran

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to