#378 glXMakeCurrent crashes

closed-invalid
Ian Romanick
MGA OpenGL (56)
5
2002-12-18
2001-09-05
Bernd Paysan
No

Hi!

I've updated from the 4.1.0 drm code to Linux 2.4.9
(with build-in drm code), and all I get on application
start is a segfault in driMesaBindContext. Output of
gdb:

Starting program: /usr/X11R6/bin/glxinfo
[New Thread 1024 (LWP 5240)]
name of display: :0.0

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 5240)]
0x4037f48f in driMesaBindContext () from
/usr/X11R6/lib/modules/dri/mga_dri.so
(gdb) bt
#0 0x4037f48f in driMesaBindContext ()
from /usr/X11R6/lib/modules/dri/mga_dri.so
#1 0x401010cf in glXMakeCurrent () from
/usr/lib/libGL.so.1
#2 0x8048e41 in print_screen_info ()
#3 0x8049c04 in main ()
#4 0x40259c6f in __libc_start_main () from
/lib/libc.so.6
(gdb) x/i $pc
0x4037f48f <driMesaBindContext+223>: mov
%ebx,0x14(%esi)
(gdb) info registers
eax 0x1 1
ecx 0x804e1d0 134537680
edx 0x8050fec 134549484
ebx 0x804e130 134537520
esp 0xbffff354 0xbffff354
ebp 0xbffff37c 0xbffff37c
esi 0x23 35
edi 0x804ebd8 134540248
...

The crashing sequence seems to be from
xc/lib/GL/mesa/dri/dri_mesa.c:385:

/* Bind the drawable to the context */
pcp = (__DRIcontextPrivate*)gc->driContext.private;
pcp->driDrawablePriv = pdp;
^^^^^^^^^^^^^^^^^^^^^^^^^^^
pdp->driContextPriv = pcp;
pdp->refcount++;

Apparently pcp is completely bogus. What's out of sync?

Discussion

  • Bernd Paysan
    Bernd Paysan
    2001-09-06

    Logged In: YES
    user_id=3203

    Aaah! After looking closer in which libraries glxinfo binds
    to, I found out that SuSE changed the symbolic link
    libGL.so.1 to the XFree86 4.0.3 GLX/DRI library - and that
    this won't work with XFree86 4.1.0 is obvious.

     
  • Bernd Paysan
    Bernd Paysan
    2001-09-06

    • status: open --> open-invalid
     
  • Ian Romanick
    Ian Romanick
    2002-12-18

    Logged In: YES
    user_id=423974

    I am closing this bug as user (installation) error.

     
  • Ian Romanick
    Ian Romanick
    2002-12-18

    • assigned_to: nobody --> idr
    • status: open-invalid --> closed-invalid