Package: libgtkglext1
Version: 1.0.6-2
Severity: normal

hi

I was trying to write a program using libgtkglext1 , and it crashed;
so I downloaded the source of libgtkglext1 1.0.6-2 ; I ran
 ./configure CFLAGS='-g' 
and compiled everything ; the examples 'coolwave'
'coolwave2' 'multiarb' indeed do crash of Segmentation fault ; in
attachment see the output of 'where' of 'gdb'

I have traced 'multiarb'  step by step in gdkglquery-x11.c : 
at line 222-25 :
>  typedef GdkGLProc (*__glXGetProcAddressProc) (const GLubyte *);
>  static __glXGetProcAddressProc glx_get_proc_address = 
> (__glXGetProcAddressProc) -1;
at line 373 :
>    file_name = g_module_build_path (NULL, "GL");
has result file_name="libGL.so"
at line 380 :
> g_module_symbol (module, "glXGetProcAddress",
>                               (gpointer) &glx_get_proc_address);
at line 408 : 
>    proc_address = glx_get_proc_address (proc_name);
proc_name seems ok, but when the program calls into  glXGetProcAddress
immediatly the program dies of SIGSEGV

So it seems that that is not the correct way to call glXGetProcAddress
(or maybe there is a bug in libGL.so); I looked into
/usr/include/GL/glxext.h , and I tried patching the file
gdk/x11/gdkglquery-x11.c as in attachment, but unfortunately it did
not work.

a.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (650, 'testing'), (600, 'stable'), (450, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-k7
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages libgtkglext1 depends on:
ii  libatk1.0-0               1.10.3-1       The ATK accessibility toolkit
ii  libc6                     2.3.5-6        GNU C Library: Shared libraries an
ii  libglib2.0-0              2.8.3-1        The GLib library of C routines
hi  libglu1-mesa [libglu1]    5.0.0-5.1      The OpenGL utility library, libGLU
ii  libgtk2.0-0               2.6.10-1       The GTK+ graphical user interface 
ii  libice6                   6.8.2.dfsg.1-7 Inter-Client Exchange library
ii  libpango1.0-0             1.8.2-3        Layout and rendering of internatio
ii  libsm6                    6.8.2.dfsg.1-7 X Window System Session Management
ii  libxmu6                   6.8.2.dfsg.1-7 X Window System miscellaneous util
ii  libxt6                    6.8.2.dfsg.1-7 X Toolkit Intrinsics
ii  mesag3 [libgl1]           5.0.0-5.1      A 3-D graphics library which imple
ii  xlibs                     6.8.2.dfsg.1-7 X Window System client libraries m

libgtkglext1 recommends no packages.

-- no debconf information

-- 
Andrea Mennucc
 "E' un mondo difficile. Che vita intensa!" (Tonino Carotone)
#0  0xb7d606bc in ?? ()
#1  0xb7f4bd05 in gdk_gl_get_proc_address (
    proc_name=0xb7f52819 "glActiveTextureARB") at gdkglquery-x11.c:408
#2  0xb7f2d205 in gdk_gl_get_glActiveTextureARB () at gdkglglext.c:2747
#3  0xb7f2ddfa in gdk_gl_get_GL_ARB_multitexture () at gdkglglext.c:3366
#4  0x0804a4d9 in init (widget=0x8089448, data=0x0) at multiarb.c:66
#5  0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#6  0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#7  0x43f240a8 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#8  0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#9  0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#10 0x4426898e in gtk_widget_realize () from /usr/lib/libgtk-x11-2.0.so.0
#11 0x44268b69 in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#12 0x44105994 in gtk_container_get_focus_hadjustment ()
   from /usr/lib/libgtk-x11-2.0.so.0
#13 0x440cceeb in gtk_box_reorder_child () from /usr/lib/libgtk-x11-2.0.so.0
#14 0x44103f59 in gtk_container_forall () from /usr/lib/libgtk-x11-2.0.so.0
#15 0x441059db in gtk_container_get_focus_hadjustment ()
   from /usr/lib/libgtk-x11-2.0.so.0
#16 0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#17 0x43f13fd8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#18 0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#19 0x43f23546 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#20 0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#21 0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#22 0x44268af6 in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#23 0x44271461 in gtk_window_reshow_with_initial_size ()
   from /usr/lib/libgtk-x11-2.0.so.0
#24 0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#25 0x43f13fd8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#26 0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#27 0x43f23546 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#28 0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#29 0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#30 0x44268af6 in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#31 0x442738c5 in gtk_window_get_position () from /usr/lib/libgtk-x11-2.0.so.0
#32 0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#33 0x43f13fd8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#34 0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#35 0x43f23546 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#36 0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#37 0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#38 0x44262362 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#39 0x0804b4e7 in main (argc=1, argv=0xbfb5efb4) at multiarb.c:561
#0  0xb7d766bc in ?? ()
#1  0xb7f61d05 in gdk_gl_get_proc_address (
    proc_name=0xb7f695d5 "glPolygonOffsetEXT") at gdkglquery-x11.c:408
#2  0xb7f47f26 in gdk_gl_get_glPolygonOffsetEXT () at gdkglglext.c:6159
#3  0x0804a01f in realize (widget=0x80939f8, data=0x0) at coolwave2.c:251
#4  0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#5  0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#6  0x43f240a8 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#7  0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#8  0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#9  0x4426898e in gtk_widget_realize () from /usr/lib/libgtk-x11-2.0.so.0
#10 0x44268b69 in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#11 0x44271461 in gtk_window_reshow_with_initial_size ()
   from /usr/lib/libgtk-x11-2.0.so.0
#12 0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#13 0x43f13fd8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#14 0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#15 0x43f23546 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#16 0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#17 0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#18 0x44268af6 in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#19 0x442738c5 in gtk_window_get_position () from /usr/lib/libgtk-x11-2.0.so.0
#20 0x43f206ab in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#21 0x43f13fd8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#22 0x43f1467b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#23 0x43f23546 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#24 0x43f25077 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#25 0x43f2542e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#26 0x44262362 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#27 0x0804aec6 in main (argc=1, argv=0xbf9741a4) at coolwave2.c:872
--- gdk/x11/gdkglquery-x11.c.ORIG       2005-11-01 23:00:57.000000000 +0100
+++ gdk/x11/gdkglquery-x11.c    2005-11-01 23:03:01.000000000 +0100
@@ -354,8 +354,12 @@
 GdkGLProc
 gdk_gl_get_proc_address (const char *proc_name)
 {
-  typedef GdkGLProc (*__glXGetProcAddressProc) (const GLubyte *);
-  static __glXGetProcAddressProc glx_get_proc_address = 
(__glXGetProcAddressProc) -1;
+  //new defininition
+  typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte 
*procName);
+  static PFNGLXGETPROCADDRESSPROC glx_get_proc_address = NULL;
+  // old definition
+  //typedef GdkGLProc (*__glXGetProcAddressProc) (const GLubyte *);
+  //static __glXGetProcAddressProc glx_get_proc_address = 
(__glXGetProcAddressProc) -1;
   gchar *file_name;
   GModule *module;
   GdkGLProc proc_address = NULL;
@@ -364,7 +368,7 @@
 
   if (strncmp ("glu", proc_name, 3) != 0)
     {
-      if (glx_get_proc_address == (__glXGetProcAddressProc) -1)
+      if (glx_get_proc_address == NULL)
         {
           /*
            * Look up glXGetProcAddress () function.

Attachment: signature.asc
Description: Digital signature

Reply via email to