the bug exists in mesa 7.4.2, 7.5, 7.6 and the git checkout on May 14, here is the debug info from valgrind, and the crash can be reproduced by the gears.cc program which is an example file of gtkglextmm.
-----------------------------------------------------------------------------------------
==3503== ERROR SUMMARY: 3 errors from 2 contexts (suppressed: 275 from 5)
==3503==
==3503== 1 errors in context 1 of 2:
==3503== Conditional jump or move depends on uninitialised value(s)
==3503== at 0x5F8BF98: glXWaitGL (glxcmds.c:620)
==3503== by 0x5AD6730: _gdk_gl_context_destroy (gdkglcontext-x11.c:95)
==3503== by 0x5ABA8B1: gdk_gl_context_destroy (gdkglcontext.c:118)
==3503== by 0x5243BC1: gtk_gl_widget_unrealize (gtkglwidget.c:149)
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5C2A: signal_emit_unlocked_R (gsignal.c:3247)
==3503== by 0x9CC7021: g_signal_emit_valist (gsignal.c:2980)
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792ED61: gtk_widget_unrealize (in
/usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== by 0x7934ABC: gtk_widget_unparent (in
/usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== by 0x783C257: (within /usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== Uninitialised value was created by a heap allocation
==3503== at 0x4C2391E: malloc (vg_replace_malloc.c:207)
==3503== by 0x5FACEFD: driCreateScreen (drisw_glx.c:362)
==3503== by 0x5F8DDEE: __glXInitialize (glxext.c:622)
==3503== by 0x5F8918C: GetGLXPrivScreenConfig (glxcmds.c:183)
==3503== by 0x5F8A00E: glXChooseVisual (glxcmds.c:1304)
==3503== by 0x5AD60CB: gdk_gl_config_new_common (gdkglconfig-x11.c:519)
==3503== by 0x5ABA1EE: gdk_gl_config_new_rgb (gdkglconfig.c:193)
==3503== by 0x5ABA316: gdk_gl_config_new_by_mode_common (gdkglconfig.c:210)
==3503== by 0x503A75A: Gdk::GL::Config::create(Gdk::GL::ConfigMode)
(in /usr/lib/libgdkglextmm-x11-1.2.so.0.0.0)
==3503== by 0x4149FB: SurfaceView::SurfaceView(bool) (SurfaceView.cc:81)
==3503== by 0x415171: MechanicalSystemUi::MechanicalSystemUi() (Ui.cc:19)
==3503== by 0x40E1D0: main (main.cc:66)
==3503==
==3503== 2 errors in context 2 of 2:
==3503== Conditional jump or move depends on uninitialised value(s)
==3503== at 0x5F8BE57: glXWaitX (glxcmds.c:659)
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5C2A: signal_emit_unlocked_R (gsignal.c:3247)
==3503== by 0x9CC7021: g_signal_emit_valist (gsignal.c:2980)
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792D269: gtk_widget_size_allocate (in
/usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== by 0x783F157: (within /usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== by 0x9CB206E: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5512: signal_emit_unlocked_R (gsignal.c:3177)
==3503== by 0x9CC7021: g_signal_emit_valist (gsignal.c:2980)
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792D269: gtk_widget_size_allocate (in
/usr/lib/libgtk-x11-2.0.so.0.1600.1)
==3503== Uninitialised value was created by a heap allocation
==3503== at 0x4C2391E: malloc (vg_replace_malloc.c:207)
==3503== by 0x5FACEFD: driCreateScreen (drisw_glx.c:362)
==3503== by 0x5F8DDEE: __glXInitialize (glxext.c:622)
==3503== by 0x5F8918C: GetGLXPrivScreenConfig (glxcmds.c:183)
==3503== by 0x5F8A00E: glXChooseVisual (glxcmds.c:1304)
==3503== by 0x5AD60CB: gdk_gl_config_new_common (gdkglconfig-x11.c:519)
==3503== by 0x5ABA1EE: gdk_gl_config_new_rgb (gdkglconfig.c:193)
==3503== by 0x5ABA316: gdk_gl_config_new_by_mode_common (gdkglconfig.c:210)
==3503== by 0x503A75A: Gdk::GL::Config::create(Gdk::GL::ConfigMode)
(in /usr/lib/libgdkglextmm-x11-1.2.so.0.0.0)
==3503== by 0x4149FB: SurfaceView::SurfaceView(bool) (SurfaceView.cc:81)
==3503== by 0x415171: MechanicalSystemUi::MechanicalSystemUi() (Ui.cc:19)
==3503== by 0x40E1D0: main (main.cc:66)
the bug exists in mesa 7.4.2, 7.5, 7.6 and the git checkout on May 14, here is the debug info from valgrind, and the crash can be reproduced by the gears.cc program which is an example file of gtkglextmm. ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ----- context_ destroy (gdkglcontext- x11.c:95) context_ destroy (gdkglcontext. c:118) widget_ unrealize (gtkglwidget.c:149) emit_unlocked_ R (gsignal.c:3247) emit_valist (gsignal.c:2980) unrealize (in libgtk- x11-2.0. so.0.1600. 1) libgtk- x11-2.0. so.0.1600. 1) libgtk- x11-2.0. so.0.1600. 1) malloc. c:207) nConfig (glxcmds.c:183) config_ new_common (gdkglconfig- x11.c:519) config_ new_rgb (gdkglconfig.c:193) config_ new_by_ mode_common (gdkglconfig.c:210) :Config: :create( Gdk::GL: :ConfigMode) libgdkglextmm- x11-1.2. so.0.0. 0) :SurfaceView( bool) (SurfaceView.cc:81) mUi::Mechanical SystemUi( ) (Ui.cc:19) emit_unlocked_ R (gsignal.c:3247) emit_valist (gsignal.c:2980) size_allocate (in libgtk- x11-2.0. so.0.1600. 1) libgtk- x11-2.0. so.0.1600. 1) emit_unlocked_ R (gsignal.c:3177) emit_valist (gsignal.c:2980) size_allocate (in libgtk- x11-2.0. so.0.1600. 1) malloc. c:207) nConfig (glxcmds.c:183) config_ new_common (gdkglconfig- x11.c:519) config_ new_rgb (gdkglconfig.c:193) config_ new_by_ mode_common (gdkglconfig.c:210) :Config: :create( Gdk::GL: :ConfigMode) libgdkglextmm- x11-1.2. so.0.0. 0) :SurfaceView( bool) (SurfaceView.cc:81) mUi::Mechanical SystemUi( ) (Ui.cc:19)
-------
==3503== ERROR SUMMARY: 3 errors from 2 contexts (suppressed: 275 from 5)
==3503==
==3503== 1 errors in context 1 of 2:
==3503== Conditional jump or move depends on uninitialised value(s)
==3503== at 0x5F8BF98: glXWaitGL (glxcmds.c:620)
==3503== by 0x5AD6730: _gdk_gl_
==3503== by 0x5ABA8B1: gdk_gl_
==3503== by 0x5243BC1: gtk_gl_
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5C2A: signal_
==3503== by 0x9CC7021: g_signal_
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792ED61: gtk_widget_
/usr/lib/
==3503== by 0x7934ABC: gtk_widget_unparent (in
/usr/lib/
==3503== by 0x783C257: (within /usr/lib/
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== Uninitialised value was created by a heap allocation
==3503== at 0x4C2391E: malloc (vg_replace_
==3503== by 0x5FACEFD: driCreateScreen (drisw_glx.c:362)
==3503== by 0x5F8DDEE: __glXInitialize (glxext.c:622)
==3503== by 0x5F8918C: GetGLXPrivScree
==3503== by 0x5F8A00E: glXChooseVisual (glxcmds.c:1304)
==3503== by 0x5AD60CB: gdk_gl_
==3503== by 0x5ABA1EE: gdk_gl_
==3503== by 0x5ABA316: gdk_gl_
==3503== by 0x503A75A: Gdk::GL:
(in /usr/lib/
==3503== by 0x4149FB: SurfaceView:
==3503== by 0x415171: MechanicalSyste
==3503== by 0x40E1D0: main (main.cc:66)
==3503==
==3503== 2 errors in context 2 of 2:
==3503== Conditional jump or move depends on uninitialised value(s)
==3503== at 0x5F8BE57: glXWaitX (glxcmds.c:659)
==3503== by 0x9CB211C: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5C2A: signal_
==3503== by 0x9CC7021: g_signal_
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792D269: gtk_widget_
/usr/lib/
==3503== by 0x783F157: (within /usr/lib/
==3503== by 0x9CB206E: g_closure_invoke (gclosure.c:767)
==3503== by 0x9CC5512: signal_
==3503== by 0x9CC7021: g_signal_
==3503== by 0x9CC74F2: g_signal_emit (gsignal.c:3037)
==3503== by 0x792D269: gtk_widget_
/usr/lib/
==3503== Uninitialised value was created by a heap allocation
==3503== at 0x4C2391E: malloc (vg_replace_
==3503== by 0x5FACEFD: driCreateScreen (drisw_glx.c:362)
==3503== by 0x5F8DDEE: __glXInitialize (glxext.c:622)
==3503== by 0x5F8918C: GetGLXPrivScree
==3503== by 0x5F8A00E: glXChooseVisual (glxcmds.c:1304)
==3503== by 0x5AD60CB: gdk_gl_
==3503== by 0x5ABA1EE: gdk_gl_
==3503== by 0x5ABA316: gdk_gl_
==3503== by 0x503A75A: Gdk::GL:
(in /usr/lib/
==3503== by 0x4149FB: SurfaceView:
==3503== by 0x415171: MechanicalSyste
==3503== by 0x40E1D0: main (main.cc:66)