[Mesa-dev] [Bug 54080] glXQueryDrawable fails with GLXBadDrawable for a Window in direct context

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Oct 2 07:27:50 PDT 2014


https://bugs.freedesktop.org/show_bug.cgi?id=54080

--- Comment #6 from Adrian Negreanu <adrian.m.negreanu at intel.com> ---
Created attachment 107229
  --> https://bugs.freedesktop.org/attachment.cgi?id=107229&action=edit
call SendMakeCurrent.

With the 0001-SendMakeCurrent, the error goes away, but causes an Xorg segfault
when glxgears exits.

(gdb) bt
#0  in ?? ()
#1  in glxClientCallback (list=<optimized out>, closure=<optimized out>,
data=<optimized out>) at xserver/glx/glxext.c:291
#2  in _CallCallbacks (pcbl=pcbl at entry=0x5555559a5d60 <ClientStateCallback>,
call_data=call_data at entry=0x7fffffffd9f0) at xserver/dix/dixutils.c:718
#3  in CallCallbacks (call_data=0x7fffffffd9f0, pcbl=0x5555559a5d60
<ClientStateCallback>) at xserver/include/callback.h:83
#4  CloseDownClient (client=client at entry=0x5555560d5f10) at
xserver/dix/dispatch.c:3381
#5  in Dispatch () at xserver/dix/dispatch.c:444
#6  in dix_main (argc=4, argv=0x7fffffffdbe8, envp=<optimized out>) at
xserver/dix/main.c:296
#7  in __libc_start_main (main=0x5555555994e0 <main>, argc=4,
argv=0x7fffffffdbe8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffdbd8) at libc-start.c:287
#8  in _start ()

xserver/glx/glxext.c:291  looks like this
 286     case ClientStateGone:
 287         /* detach from all current contexts */
 288         for (c = glxAllContexts; c; c = next) {
 289             next = c->next;
 290             if (c->currentClient == pClient) {
>291                 c->loseCurrent(c);
 292                 lastGLContext = NULL;
 293                 c->currentClient = NULL;
 294                 __glXFreeContext(c);
 295             }
 296         }

but c->loseCurrent is NULL, as most of the other fields of `c', except a few,
like destroy and isDirect.

For dri2, loseCurrent should be  __glXDRIcontextLoseCurrent, set by
__glXDRIscreenCreateContext (by looking at xserver/glx/glxdri2.c)
But GLXscreen::createContext is called only when !isDirect
  by DoCreateContext  in  xserver/glx/glxcmds.c
  by __glXDisp_CreateContextAttribsARB  in  ./glx/createcontext.c

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20141002/cccb9c12/attachment.html>


More information about the mesa-dev mailing list