From: nobu.nokada@... Date: 2002-08-18T11:06:17+09:00 Subject: Re: Help with a segv in mod_ruby - interpreter bug? Hi, At Sun, 18 Aug 2002 10:42:53 +0900, Patrick May wrote: > > If you can give your complete configuration (apparently you run 1.6.7, > > right ?) and your script to try to reproduce the segfault ? > > My config: > Windows 2k with ruby 1.6.5 (2001-09-19) [i386-cygwin] > > to reproduce my segfault in cygwin ruby requires 2 files: Perhaps, Since new signleton classes for nil/false/true are never referred from them, these classes will be collected. This patch may fix the problem, but I guess the solution in 1.7 is much better. Index: class.c =================================================================== RCS file: /cvs/ruby/src/ruby/class.c,v retrieving revision 1.14.2.15 diff -u -2 -p -r1.14.2.15 class.c --- class.c 11 Jul 2002 08:24:53 -0000 1.14.2.15 +++ class.c 18 Aug 2002 02:02:26 -0000 @@ -613,7 +613,8 @@ rb_undef_method(klass, name) } -#define SPECIAL_SINGLETON(x,c) if (obj == (x)) {\ +#define SPECIAL_SINGLETON(x,c,n) if (obj == (x)) {\ if (!FL_TEST(c, FL_SINGLETON)) {\ c = rb_singleton_class_new(c);\ + st_add_direct(rb_class_tbl, rb_intern(n), c); rb_singleton_class_attached(c,obj);\ }\ @@ -631,7 +632,7 @@ rb_singleton_class(obj) } if (rb_special_const_p(obj)) { - SPECIAL_SINGLETON(Qnil, rb_cNilClass); - SPECIAL_SINGLETON(Qfalse, rb_cFalseClass); - SPECIAL_SINGLETON(Qtrue, rb_cTrueClass); + SPECIAL_SINGLETON(Qnil, rb_cNilClass, "NilClass"); + SPECIAL_SINGLETON(Qfalse, rb_cFalseClass, "FalseClass"); + SPECIAL_SINGLETON(Qtrue, rb_cTrueClass, "TrueClass"); rb_bug("unknown immediate %d", obj); } -- Nobu Nakada