Created attachment 27243 [details] [review] Patch to fix GetGLXScreenConfigs(). While testing rendering fallback functionality in an application that supports both OpenGL and software rendering, I discovered a bug in Mesa that causes the program to crash if it's running on an X server that doesn't support GLX at all (e.g. vncserver). A backtrace reveals the source: #0 GetGLXScreenConfigs (dpy=<value optimized out>, scrn=0) at glxcmds.c:167 priv = (__GLXdisplayPrivate * const) 0x0 #1 0xb7a40fa7 in CreateContext (dpy=0x9c3ad98, vis=<value optimized out>, fbconfig=0x0, shareList=0x0, allowDirect=1, contextID=0, use_glx_1_3=0, renderType=0) at glxcmds.c:364 gc = (GLXContext) 0xb79e2ff4 screen = -1208638311 psc = <value optimized out> #2 0xb7a415c0 in glXCreateContext (dpy=0x9c3ad98, vis=0x99ce4c0, shareList=0x0, allowDirect=1) at glxcmds.c:487 The GetGLXScreenConfigs() function is as follows: static __GLXscreenConfigs * GetGLXScreenConfigs(Display *dpy, int scrn) { __GLXdisplayPrivate * const priv = __glXInitialize(dpy); return (priv->screenConfigs != NULL) ? &priv->screenConfigs[scrn] : NULL; } __glXInitialize() returns NULL because the X server doesn't support GLX; however, the following statement doesn't check if priv is NULL, which results in a null pointer dereference. The solution is to check both priv and priv->screenConfigs for NULL. Mesa version is 7.5-rc4.
Fixed in git. Commit d8cc32b7a5ba2588ce1a25c3838ebb4ee6c26e82
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.