On Sunday 02 March 2003 17:47, nobu.nokada / softhome.net wrote:

> Can you show the stack trace?

Hi Nobu

I ran over the same bug some time ago. Matz tried to reproduce it, but failed 
(I think...). And now after several CVS updates even I can't reproduce the 
bug anymore.
But I send you my mail with the stack trace (at the bottom) from back then 
anyway.

Greets, Thomas

---------------
Hi,

I think I discovered a bug in Ruby 1.8.0:

>>uehli@ueh-h bug2 $ ruby -v
ruby 1.8.0 (2003-01-27) [i686-linux]

>>uehli@ueh-h bug2 $ ruby extconf.rb
[BUG] unknown node type 0
ruby 1.8.0 (2003-01-27) [i686-linux]
Aborted

The executed script is the (slightly modified) extconf.rb of the Ruby OpenGL 
extension. I tried to narrow down the bug but as soon as I comment a single 
line of the source out the bug seems to disappear.

So here is the script (sorry for the length!):

extconf.rb
==========================================
#
# $Date: 2001/12/01 05:24:58 $
# $Author: yoshi $
#

require "rbconfig"
Config::CONFIG.each do |k,v|  Config::MAKEFILE_CONFIG[k] = v.dup end
require "mkmf"

gl_libname = ""
glu_libname = ""
glut_libname = ""

modules = ""
ogl_flg = false
glut_flg = false

File.unlink("Makefile") if (FileTest.exist? "Makefile")
File.unlink("Makefile.ogl") if (FileTest.exist? "Makefile.ogl")
File.unlink("Makefile.glut") if (FileTest.exist? "Makefile.glut")

if (/cygwin/ =~ PLATFORM)
  $CFLAGS="-DWIN32"
  gl_libname = "opengl32"
  glu_libname = "glu32"
  glut_libname = "glut32"
elsif (/mswin32/ =~ PLATFORM)
  $CFLAGS="-DWIN32"
  gl_libname = "opengl32"
  glu_libname = "glu32"
  glut_libname = "glut32"
else
  $CFLAGS += " -I."

  dir_config("x11", "/usr/X11R6")

  $libs = append_library($libs, "Xmu")
  $libs = append_library($libs, "X11")
  gl_libname = "GL"
  glu_libname = "GLU"
  glut_libname = "glut"
end

$objs = ["glu.o", "ogl.o", "rbogl.o"]
#have_library("pthread", "pthread_create")
(have_library(gl_libname, "glEnd") || have_library("Mesa"+gl_libname, nil)) &&
  (have_library(glu_libname, "gluDisk") ||  have_library("Mesa"+glu_libname, 
nil)) &&
  create_makefile("opengl")
if (FileTest.exist? "Makefile")
    open("Makefile") {|f|
        open("Makefile.ogl", "w") {|wfile|
           wfile.write(f.read)
        }
    }
    File.unlink("Makefile")
    modules = modules + "opengl.#{CONFIG['DLEXT']}" 
    ogl_flg = true
else
    p "can't create OpenGL module!"
    exit 1
end

$objs = ["glut.o"]
have_library("Xi", "XAllowDeviceEvents") &&
  have_library("Xext", "XMITMiscGetBugMode") &&
  have_library("Xmu", "XmuAddCloseDisplayHook")
have_library(glut_libname, nil) &&
  create_makefile("glut")
if (FileTest.exist? "Makefile")
    open("Makefile") {|f|
        open("Makefile.glut", "w") {|wfile|
           wfile.write(f.read)
        }
    }
    File.unlink("Makefile")
    modules = "glut.#{CONFIG['DLEXT']} " + modules
    glut_flg = true
end

open("Makefile", "w") {|f|
  f.write <<"MAKEFILE"
SHELL = /bin/sh
all: #{modules}

opengl.#{CONFIG['DLEXT']}: rbogl.c ogl.c glu.c rbogl.h
        @echo Now Making opengl extend module
        @$(MAKE) -f Makefile.ogl

glut.#{CONFIG['DLEXT']}: glut.c
        @echo Now Making glut extend module
        @$(MAKE) -f Makefile.glut

clean:
        @rm -f *.o *.so *.sl *.a
        @rm -f $(TARGET).lib $(TARGET).exp
        @rm -f core ruby$(EXEEXT) *~
        @rm -f Makefile.ogl Makefile.glut
        @rm -f Makefile extconf.h conftest.*

install: #{modules}
#{"\t@$(MAKE) -f Makefile.ogl install" if (ogl_flg)}
#{"\t@$(MAKE) -f Makefile.glut install" if (glut_flg)}

site-install: #{modules}
#{"\t@$(MAKE) -f Makefile.ogl site-install" if (ogl_flg)}
#{"\t@$(MAKE) -f Makefile.glut site-install" if (glut_flg)}
MAKEFILE
}


========================================== 

Note that there must be EXACTLY 2 empty lines at the end (as above), else the 
bug disappears too.

Here is the stack trace:

(gdb) info stack
#0  0x400a1031 in kill () from /lib/libc.so.6
#1  0x400a0c28 in raise () from /lib/libc.so.6
#2  0x400a272b in abort () from /lib/libc.so.6
#3  0x080c7829 in rb_bug (fmt=0x0) at error.c:174
#4  0x08058a51 in rb_eval (self=1075661308, n=0x0) at eval.c:3427
#5  0x0805b7d3 in rb_call0 (klass=1075666208, recv=1075661308, id=9865, oid=0,
    argc=0, argv=0xbfffeb70, body=0x4022dce0, nosuper=0) at eval.c:4743
#6  0x0805bd51 in rb_call (klass=1075666208, recv=1075661308, mid=9865,
    argc=2, argv=0xbfffeb68, scope=1) at eval.c:4833
#7  0x08056de2 in rb_eval (self=1075661308, n=0x0) at eval.c:2789
#8  0x080554f0 in rb_eval (self=1075661308, n=0x0) at eval.c:2251
#9  0x08053446 in ruby_exec () at eval.c:1314
#10 0x08053484 in ruby_run () at eval.c:1335
#11 0x080514f5 in main (argc=0, argv=0x0, envp=0xbffff760) at main.c:50
#12 0x4008ce34 in __libc_start_main () from /lib/libc.so.6


I could reproduce the bug on two Linux boxes and it's not the first time I ran 
into that bug but I could not get hold of that nasty thing before.

Thanks for your help.
-- Thomas