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
