From: Ariff Abdullah Date: 2002-12-29T05:21:43+09:00 Subject: string.c (str_alloc) ruby 1.8 + ruby-gtk crash str = ARGV[0] || "" str_dup = str.dup() require 'gtk' style = Gtk::Style.new() style.font.string_width(str) style.font.string_width(str_dup) [sky@wizard build]# ./ruby /tmp/bla.rb '' Gdk-CRITICAL **: file gdkfont.c: line 319 (gdk_string_width): assertion `string != NULL' failed. [sky@wizard build]# ./ruby -w /tmp/bla.rb '' /tmp/bla.rb:6: [BUG] Segmentation fault ruby 1.8.0 (2002-12-28) [i386-freebsd4] Abort trap (core dumped) But... [sky@wizard build]# ./ruby -w /tmp/bla.rb [sky@wizard build]# ./ruby /tmp/bla.rb looks like bad interaction between zero-length ARGV and String::dup() (or incomplete String object setup/initialization? or verbosity -w setup?) Fix (perhaps just workaround?) string.c , function str_alloc() --- string.c.orig Sun Dec 29 04:21:06 2002 +++ string.c Sun Dec 29 04:16:17 2002 @@ -45,8 +45,8 @@ OBJSETUP(str, klass, T_STRING); str->ptr = 0; - str->len = 0; - str->aux.capa = 0; + str->len = -1; + str->aux.capa = -1; return (VALUE)str; } [sky@wizard build]# ./ruby /tmp/bla.rb '' [sky@wizard build]# ./ruby -w /tmp/bla.rb '' [sky@wizard build]# ./ruby /tmp/bla.rb [sky@wizard build]# ./ruby -w /tmp/bla.rb '' all test runs fine.