[Feature #3203] LazySweepGC patch

Feature #3203: LazySweepGC patch
http://redmine.ruby-lang.org/issues/show/3203

e$B5/I<<Te(B: Narihiro N.
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe(B: Normal

e$B$4L5:;BA$7$F$$$^$9!#e(Bnarie$B$G$9!#e(B

CRubye$B$Ne(BGCe$B$Ke(BLazySweepe$B$rAH$_9~$s$@%Q%C%A$r:n@.$7$^$7$?!J%j%S%8%g%se(B27489e$B8~e(B
e$B$1!K!#e(B

= e$B<BAu$K$D$$$Fe(B

== e$B35MWe(B
e$B4pK\E*$K0J2<$NF0:n$r7+$jJV$7$^$9!#e(B
0. e$B%*%V%8%'%/%H$,B-$j$J$/$J$C$?$ie(B 1.e$B$Xe(B

  1. e$B%^!<%/:Q$_$Ne(BRubye$B%R!<%W%9%m%C%H$N0l$D$r%9%$!<%We(B

e$B$b$7!“6u$-%%V%8%'%/%H$,8+$D$+$l$P%%V%8%‘%/%H$rJV5Q$7!"e(BLazySweepe$B=e(B
e$BN;e(B
3.
e$B$b$7!"6u$-%
%V%8%’%/%H$J8+$D$+$i$J$1$l$P!”<!$N%^!<%/:Q$_e(BRubye$B%R!<%W%9e(B
e$B%m%C%H$re(BLazySweepe$B$NBP>]$H$7!"e(B1.e$B$Xe(B
4.
e$B%^!<%/:Q$_e(BRubye$B%R!<%W%9%m%C%H$,$9$Y$F$J$/$J$C$?>l9g$O%^!<%/$r<B;$7!"e(B
1.e$B$Xe(B

LazySweepe$B$7$J$$e(BGCe$B!JIaDL$Ne(BGCe$B!K$b;D$7$F$*$j!"e(BGC.starte$B$N;~$O$3$A$i$r8F$S$^e(B
e$B$9!#e(B

== Rubye$B%R!<%W3HD%!u=L>.e(B
Rubye$B%R!<%W$N3HD%$H=L>.$O%?%$%_%s%0$,0[$J$k$@$1$G$9!#e(B

Rubye$B$N%R!<%W3HD%$Oe(BLazySweepe$B$HF1;~$K9T$$$^$9!#6qBNE*$K$O%R!<%W%9%m%C%H$re(B
1e$B8DA}$d$9$HF1;~$K!"e(BRubye$B%R!<%W%9%m%C%H$re(B1e$B8D%9%$!<%W$9$k$h$&$K$7$F$$$^$9!#e(B
e$B$3$N9)IW$K$h$C$F!"e(BRubye$B%R!<%WFb$K$^$C$?$/6u$-$,$J$$>l9g$G$b!"e(BGCe$BDd;_;~4Ve(B
e$B$r:GDc8B$KM^$($k$3$H$,$G$-$^$9!#e(B

Rubye$B%R!<%W3HD%$re(BLazySweepe$B;~$K9T$&$?$a!“%^!<%/8e$K$O3HD%$N7hDj$r$7$J$1$le(B
e$B$P$J$j$^$;$s!#$=$N$?$a!”%^!<%/;~$K@8$-$F$$$k%*%V%8%‘%/%H?t$r%+%&%s%H$7e(B
e$B$F$$$^$9!#$3$l$K$h$C$F%^!<%/%U%’!<%:$O0JA0$HHf$Y$F>/$7$@$1CY$/$J$j$^$9!#e(B

Rubye$B%R!<%W=L>.$bF1$8$/e(BLazySweepe$B;~$K9T$$$^$9!#e(B

== sorted_heaps_slote$B9=B$BN$NDI2Ce(B
heaps_slote$B9=B$BN$OG[Ns$H$7$F4IM}$9$k$N$r$d$a!"e(BLazySweepe$B$NBP>]$H$J$ke(B
Rubye$B%R!<%W%9%m%C%H$OAPJ}8~%j%9%H$G4IM}$7$F$$$^$9!#e(B

is_pointer_to_heap()e$B4X?t$G$Oe(Bheaps_slote$B9=B$BN$NJQ$o$j$Ke(B
sorted_heaps_slote$B9=B$BN$r;HMQ$9$k$h$&$KJQ99$7$^$7$?!#e(B

= e$B@-G=I>2Ae(B

== e$B%Y%s%A%^!<%/%W%m%0%i%e(B e$B@8$-$F$$$k%*%V%8%'%/%H!";$s$G$$$k%*%V%8%'%/%H$,$"$kDxEY%P%i%P%i$Ke(BRuby
e$B%R!<%WFb$KJ,I[$9$k$h$&$J%Y%s%A%^!<%/%W%m%0%i%`$r:n@.$7!“7WB,$K;HMQ$7$^e(B
e$B$7$?!J”(E:IU%U%!%$%k;2>H!K!#e(B

== e$B7k2Le(B
GCe$B:GBgDd;;~4V!'e(B48.00ms => 28.00ms (58%)
GCe$BAmDd;
;~4V!'e(B0.83ms => 0.92ms (110%)

e$BAmDd;;~4V$O0-$/$J$j$^$9$,!":GBgDd;;~4V$K$D$$$F$O2~A1$,8+$i$l$^$9!#e(B

e$B$=$NB>!"M-MQ$J%Y%s%A%^!<%/$r$4B8$8$G$7$?$iB,$C$F$4Js9p$$$?$@$1$k$H4r$7e(B
e$B$$$G$9!#e(B

= e$BF0:n8!>Ze(B
e$B0J2<$N4D6-$G$Ne(Bmake
test-alle$B$,DL$k!J%Q%C%ABP>]$N%j%S%8%g%s$HHf3S$7$FJQ2=e(B
e$B$,$J$$!K$3$H$r3NG’$7$F$$$^$9!#e(B

$ uname -a
Linux nari-laptop 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09
UTC 2010 i686 GNU/Linux

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:41067] [Feature #3203] LazySweepGC patch”
on Tue, 27 Apr 2010 01:11:50 +0900, Narihiro N.
[email protected] writes:

|CRubye$B$Ne(BGCe$B$Ke(BLazySweepe$B$rAH$_9~$s$@%Q%C%A$r:n@.$7$^$7$?!J%j%S%8%g%se(B27489e$B8~e(B
|e$B$1!K!#e(B

e$B%3%_%C%H$7$A$c$C$F$$$$$s$8$c$J$$$G$9$+$M!#e(B

e$B1sF#$G$9!#e(B

2010e$BG/e(B4e$B7ne(B27e$BF|e(B1:11 Narihiro N.
[email protected]:

e$B$=$NB>!"M-MQ$J%Y%s%A%^!<%/$r$4B8$8$G$7$?$iB,$C$F$4Js9p$$$?$@$1$k$H4r$7e(B
e$B$$$G$9!#e(B

e$BM-MQ$+$O$o$+$j$^$;$s$,!"e(Bmake benchmark
e$B$N7k2L$/$i$$$O3NG’$7$FM_$7$$$G$9!#e(B

e$B$H$$$&$@$1$J$N$b$J$s$J$N$G!"<+J,$G;n$7$F$_$^$7$?$,!"e(Bapp_pentomino
e$B$Ge(B

./benchmark/bm_app_pentomino.rb:117:in block (2 levels) in setpiece': method method_missing’ called on unexpected T_NODE object (0x8217f0c
flags=0x383c klass=0x0) (NotImplementedError)

e$B$GMn$A$^$7$?!#$b$&$A$g$C$H%G%P%C%0$,I,MW$J$h$&$G$9!#e(B

e$B$$$:$l$K$;$h!“e(B1.9.2
e$B$K$O%3%_%C%H$9$k$+$O5DO@$NM>CO$,$”$k$H;W$$$^$9!#e(B

e$B@.@%$G$9!#e(B

Yusuke ENDOH [email protected]:

2010e$BG/e(B4e$B7ne(B27e$BF|e(B1:11 Narihiro N. [email protected]>:

e$B$=$NB>!"M-MQ$J%Y%s%A%^!<%/$r$4B8$8$G$7$?$iB,$C$F$4Js9p$$$?$@$1$k$H4r$7$$$G$9!#e(B
e$BM-MQ$+$O$o$+$j$^$;$s$,!"e(Bmake benchmark e$B$N7k2L$/$i$$$O3NG’$7$FM_$7$$$G$9!#e(B

make test-all e$B$N=jMW;~4V$H!“e(Bmake test-rubyspec
e$B$N=jMW;~4V$H$+e(B (e$B7k2L$be(B)e$B!“e(B
e$B$”$He(B encoding e$B%F!<%V%k$N:n@.;~4V$H$+$b$”$j$^$9$+$M!#e(B

e$B$$$:$l$K$;$h!“e(B1.9.2 e$B$K$O%3%_%C%H$9$k$+$O5DO@$NM>CO$,$”$k$H;W$$$^$9!#e(B

e$B$(!“e(B1.9.2 e$B$KBP$7$F$N%3%_%C%H$G5DO@$NM>CO$,$”$k$s$G$9$+e(B?
e$B$3$N%l%Y%k$NJQ99$r:#$+$ie(B 1.9.2
e$B$KBP$7$F9T$&$N$OL5$$$H;W$$$^$9!#e(B
e$B$d$k$J$ie(B1.9.2e$B%V%i%s%A$r@Z$C$F$+$i$G$7$g$&!#e(B

narie$B$G$9!#e(B

2010e$BG/e(B4e$B7ne(B27e$BF|e(B10:18 NARUSE, Yui [email protected]:

e$B$“$He(B encoding e$B%F!<%V%k$N:n@.;~4V$H$+$b$”$j$^$9$+$M!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#D4$Y$F$$^$9!#e(B
e$B%P%0$b$"$k$
$?$$$J$N$GD>$7$^$9!#e(B

e$B$$$:$l$K$;$h!“e(B1.9.2 e$B$K$O%3%_%C%H$9$k$+$O5DO@$NM>CO$,$”$k$H;W$$$^$9!#e(B

e$B$(!“e(B1.9.2 e$B$KBP$7$F$N%3%_%C%H$G5DO@$NM>CO$,$”$k$s$G$9$+e(B?
e$B$3$N%l%Y%k$NJQ99$r:#$+$ie(B 1.9.2 e$B$KBP$7$F9T$&$N$OL5$$$H;W$$$^$9!#e(B
e$B$d$k$J$ie(B1.9.2e$B%V%i%s%A$r@Z$C$F$+$i$G$7$g$&!#e(B

e$B8D?ME*$J9M$($G$Oe(B1.9.2e$B$KF~$l$k$D$b$j$O$"$j$^$;$s$G$7$?!#e(B
e$B:.Mp$5$;$F$7$^$C$F$9$_$^$;$s!#e(B

nariです。

make test-rubyspec、check、benchmarkが通るようなりました。

また、make、make benchmark、test-all、test-rubyspecの実行速度も調べてみ
ました。極端に遅くなったものはなさそうです。そもそもプログラム実行時間
が早くなるたぐいの修正ではないので、目立ってに遅くなければOKだろうと思っ
ています。

make test-all
trunk : 183.42s
lazy_sweep : 196.92s

make test-rubyspec
trunk : 104.484065s
lazy_sweep : 106.389376s

make
trunk : 229.13s
lazy_sweep : 228.63s

make bechmark
minimum results in each 5 measurements.
name trunk lazy_sweep
app_answer 0.149 0.152
app_erb 1.027 1.090
app_factorial 0.495 0.500
app_fib 1.683 1.838
app_mandelbrot 0.460 0.506
app_pentomino 45.964 46.075
app_raise 1.364 1.403
app_strconcat 0.868 0.901
app_tak 2.334 2.447
app_tarai 1.857 1.840
app_uri 2.043 2.086
io_file_create 0.681 0.678
io_file_read 0.930 0.881
io_file_write 0.326 0.329
loop_for 3.810 6.067
loop_generator 1.984 1.988
loop_times 3.343 3.450
loop_whileloop 1.558 2.283
loop_whileloop2 0.322 0.477
so_ackermann 2.085 2.009
so_array 4.263 4.331
so_binary_trees 1.004 0.998
so_concatenate 0.956 0.970
so_count_words 0.424 0.439
so_exception 2.768 2.839
so_fannkuch 42.900 43.804
so_fasta 5.927 5.611
so_k_nucleotide 3.812 3.824
so_lists 0.854 0.876
so_mandelbrot 13.081 13.742
so_matrix 0.997 1.014
so_meteor_contest 14.278 14.269
so_nbody 9.369 10.590
so_nested_loop 3.067 3.061
so_nsieve 7.446 6.849
so_nsieve_bits 8.297 8.183
so_object 2.272 2.238
so_partial_sums 12.288 12.358
so_pidigits 3.317 3.311
so_random 0.808 0.850
so_reverse_complement 3.596 3.420
so_sieve 0.211 0.264
so_spectralnorm 11.595 8.725
vm1_block* 4.135 4.208
vm1_const* 2.050 2.176
vm1_ensure* 0.326 1.420
vm1_ivar* 2.275 2.938
vm1_ivar_set* 2.280 2.827
vm1_length* 1.588 2.262
vm1_neq* 1.184 1.194
vm1_not* 0.987 1.457
vm1_rescue* 0.422 0.336
vm1_simplereturn* 2.753 2.958
vm1_swap* 0.784 1.144
vm2_array* 1.802 1.917
vm2_case* 0.467 0.328
vm2_eval* 44.158 48.817
vm2_method* 4.541 4.400
vm2_mutex* 3.076 3.464
vm2_poly_method* 6.382 6.475
vm2_poly_method_ov* 0.881 0.856
vm2_proc* 1.595 1.432
vm2_regexp* 3.122 3.466
vm2_send* 1.030 0.910
vm2_super* 1.317 1.074
vm2_unif1* 0.904 0.579
vm2_zsuper* 1.277 1.357
vm3_gc 1.784 1.758
vm3_thread_create_join 5.890 6.038
vm3_thread_mutex 6.216 3.074

r28028に対するパッチを添付しておきます。

githubでforkして開発しています。

GitHub - authorNari/ruby: The Ruby Programming Language

kosakie$B$G$9e(B

e$B8D?ME*0U8+$G$9$,e(B

narie$B$G$9!#e(B

make test-rubyspece$B!"e(Bchecke$B!"e(Bbenchmarke$B$,DL$k$h$&$J$j$^$7$?!#e(B

e$B$^$?!"e(Bmakee$B!"e(Bmake benchmarke$B!"e(Btest-alle$B!"e(Btest-rubyspece$B$N<B9TB.EY$bD4$Y$F$_e(B
e$B$^$7$?!#6KC<$KCY$/$J$C$?$b$N$O$J$5$=$&$G$9!#$=$b$=$b%W%m%0%i%`<B9T;~4Ve(B
e$B$,Aa$/$J$k$?$0$$$N=$@5$G$O$J$$$N$G!"L\N)$C$F$KCY$/$J$1$l$Pe(BOKe$B$@$m$&$H;W$Ce(B
e$B$F$$$^$9!#e(B

e$B$9$G$K$^$D$b$H$5$s$+$i%3%%C%H5v2D$b$G$F$$$k$h$&$@$7!"%3%%C%H$7$A$c$($Pe(B
e$B$$$$$s$8$c$J$$$G$9$+$M!#e(B
e$B$3$&$$$&JQ99Bg$-$$$d$D$O%V%i%s%A$-$C$F$9$0$N!":#$N$h$&$J;~4|$,0lHVe(B
e$B%j%9%/Dc$$$s$8$c$J$$$+$J!<E*$J0UL#$Ge(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:41443] Re: [Feature #3203] LazySweepGC patch”
on Fri, 28 May 2010 05:15:09 +0900, Narihiro N.
[email protected] writes:

|make test-rubyspece$B!"e(Bchecke$B!"e(Bbenchmarke$B$,DL$k$h$&$J$j$^$7$?!#e(B
|
|e$B$^$?!"e(Bmakee$B!"e(Bmake benchmarke$B!"e(Btest-alle$B!"e(Btest-rubyspece$B$N<B9TB.EY$bD4$Y$F$_e(B
|e$B$^$7$?!#6KC<$KCY$/$J$C$?$b$N$O$J$5$=$&$G$9!#$=$b$=$b%W%m%0%i%`<B9T;~4Ve(B
|e$B$,Aa$/$J$k$?$0$$$N=$@5$G$O$J$$$N$G!"L\N)$C$F$KCY$/$J$1$l$Pe(BOKe$B$@$m$&$H;W$Ce(B
|e$B$F$$$^$9!#e(B

e$B%3%_%C%H$7$A$c$C$F!#e(B

2010e$BG/e(B5e$B7ne(B28e$BF|e(B5:15 Narihiro N.
[email protected]:

make test-rubyspece$B!"e(Bchecke$B!"e(Bbenchmarke$B$,DL$k$h$&$J$j$^$7$?!#e(B

e$B;W$$N)$C$F!"e(BGC.stress e$B$re(B true
e$B$K$7$F%F%9%H$rF0$+$7$F$_$^$7$?!#e(B

e$B$D$^$j!"e(B

for f in test/test_* test/*(/)
do
echo $f
./ruby -e ‘GC.stress = true; load “test/runner.rb”’ $f
done

e$B$N$h$&$J$+$s$8$G$9!#e(B

e$B$^$@=*$o$C$F$^$;$s$,!"$$$/$D$bLdBj$rH/@8$5$;$i$l$k$h$&$G$9!#e(B
e$B%3%s%Q%$%i$J$I$K$h$C$F$b0c$&$G$7$g$&$+$i;d$@$1$G$J$/!"B>$N?M$b$d$C$F$_$k$H$$$$$+$b$7$l$^$;$s!#e(B

e$B$H$j$"$($:!"H/@8$7$?LdBj$N0l$D$O0J2<$N$h$&$J$b$N$G$9!#e(B

% ./ruby -e ‘GC.stress = true; load “test/runner.rb”’ test/cgi
Loaded suite -e
Started

Finished in 597.027141 seconds.

38 tests, 524 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 55933
-e: [BUG] Segmentation fault
ruby 1.9.3dev (2010-05-29 trunk 28057) [i686-linux]

– control frame ----------
c:0001 p:0000 s:0002 b:0002 l:00236c d:00236c TOP

– C level backtrace information

./ruby(rb_vm_bugreport+0x73) [0x815803e]
./ruby [0x818d07b]
./ruby(rb_bug+0x36) [0x818d0d6]
./ruby [0x80eecb7]
[0xb7fbc410]
./ruby [0x806813d]
./ruby(rb_gc_call_finalizer_at_exit+0x19) [0x806806a]
./ruby [0x805e98a]
./ruby(ruby_cleanup+0x1de) [0x805eb7c]
./ruby(ruby_run_node+0x43) [0x805ee2d]
./ruby(main+0x74) [0x805d898]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7ddc455]
./ruby [0x805d791]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

lazy sweep e$B0JA0$+$i$"$C$?LdBj$+$bCN$l$^$;$s$1$l$I!#e(B

2010e$BG/e(B5e$B7ne(B29e$BF|e(B18:28 Tanaka A. [email protected]:

echo $f
% ./ruby -e ‘GC.stress = true; load “test/runner.rb”’ test/cgi

./ruby [0x806813d]
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

lazy sweep e$B0JA0$+$i$"$C$?LdBj$+$bCN$l$^$;$s$1$l$I!#e(B

e$B$4;XE&$"$j$,$H$&$4$6$$$^$9!#e(B
e$BD4$Y$F$_$^$9!#e(B

e$B1sF#$G$9!#e(B

2010e$BG/e(B5e$B7ne(B29e$BF|e(B18:28 Tanaka A. [email protected]:

e$B;W$$N)$C$F!"e(BGC.stress e$B$re(B true e$B$K$7$F%F%9%H$rF0$+$7$F$_$^$7$?!#e(B

e$B$H$$$&$3$H$r9M$($k$H!"%F%9%H%U%l!<%`%o!<%/$O6K8B$^$GC1=c$JJ}$,$$$$$G$9$M$(!#e(B

% ./ruby -e ‘GC.stress = true; load “test/runner.rb”’ test/cgi
snip

lazy sweep e$B0JA0$+$i$"$C$?LdBj$+$bCN$l$^$;$s$1$l$I!#e(B

e$B$3$l$K4X$7$F$O!“e(Blazy sweep e$B0JA0$+$i$”$C$?LdBj$N$h$&$G$9!#e(B

diff --git a/string.c b/string.c
index f2f49ab…ae42893 100644
— a/string.c
+++ b/string.c
@@ -613,8 +613,8 @@ str_replace_shared(VALUE str2, VALUE str)
STR_SET_EMBED_LEN(str2, RSTRING_LEN(str));
}
else {

  • FL_SET(str2, STR_NOEMBED);
    str = rb_str_new_frozen(str);
  • FL_SET(str2, STR_NOEMBED);
    RSTRING(str2)->as.heap.len = RSTRING_LEN(str);
    RSTRING(str2)->as.heap.ptr = RSTRING_PTR(str);
    RSTRING(str2)->as.heap.aux.shared = str;

2010e$BG/e(B5e$B7ne(B30e$BF|e(B0:23 Yusuke ENDOH [email protected]:

akr e$B$5$s$N7o$OL5<B$G$7$?e(B (e$B$H$$$&$+e(B [Bug #3241] e$B$G%Q%C%A:n@.:Q$e(B
e$B$@$C$?$N$K;d$,%3%
%C%H$7K:$l$F$^$7$?!#$9$_$^$;$se(B) e$B$,!"0J2<$Oe(B Lazy

e$B$=$&$G$7$?$+!#e(B

e$B$^$!!“$=$l$O$=$l$H$7$F$$$/$D$b=P$k$N$G$b$&$R$H$D!#e(B
e$B$b$A$m$se(B lazy sweep e$B$H4X78$”$k$+$I$&$+$OITL@$G$9!#e(B

% ./ruby -ve ‘GC.stress = true; load “test/runner.rb”’
test/test_delegate.rb
ruby 1.9.3dev (2010-05-30 trunk 28074) [x86_64-linux]
Loaded suite -e
Started
…E…/home/akr/chkbuild/tmp/build/ruby-trunk/20100530T001915/lib/ruby/1.9.1/minitest/unit.rb:302:
warning: too many arguments for format string
E…
Finished in 1.676947 seconds.

  1. Error:
    test_instance_method(TestDelegateClass):
    TypeError: can’t convert Hash into String
    /home/akr/chkbuild/tmp/build/ruby-trunk/20100530T001915/ruby/test/test_delegate.rb:111:in
    `test_instance_method’

  2. Error:
    test_private_method(TestDelegateClass):
    TypeError: can’t convert Array into String
    /home/akr/chkbuild/tmp/build/ruby-trunk/20100530T001915/ruby/test/test_delegate.rb:126:in
    `test_private_method’

10 tests, 24 assertions, 0 failures, 2 errors, 0 skips

Test run options: --seed 37501

e$B1sF#$G$9!#e(B

2010e$BG/e(B5e$B7ne(B29e$BF|e(B23:02 Narihiro N.
[email protected]:

e$B$4;XE&$"$j$,$H$&$4$6$$$^$9!#e(B
e$BD4$Y$F$_$^$9!#e(B

akr e$B$5$s$N7o$OL5<B$G$7$?e(B (e$B$H$$$&$+e(B [Bug #3241]
e$B$G%Q%C%A:n@.:Q$e(B
e$B$@$C$?$N$K;d$,%3%
%C%H$7K:$l$F$^$7$?!#$9$$^$;$se(B) e$B$,!"0J2<$Oe(B
Lazy
Sweep e$B%3%
%C%H8e$+$ie(B SEGV e$B$9$k$h$&$K$J$C$?$h$&$G$9!#e(B
e$B$43NG’$/$@$5$$!#e(B

$ ./ruby -e ‘1000.times { ObjectSpace.define_finalizer(“foo”.dup, proc
{ GC.start }) }’
-e:1: [BUG] gc_sweep(): unknown data type 0x1e(0x822c574)
ruby 1.9.3dev (2010-05-28 trunk 28063) [i686-linux]

– control frame ----------
c:0005 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :start
c:0004 p:0015 s:0008 b:0008 l:002054 d:000007 BLOCK -e:1
c:0003 p:---- s:0006 b:0006 l:000005 d:000005 FINISH
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 CFUNC :call
c:0001 p:0000 s:0002 b:0002 l:002054 d:002054 TOP

– Ruby level backtrace information

-e:0:in call' -e:1:in block (2 levels) in ’
-e:1:in `start’

– C level backtrace information

./ruby(rb_vm_bugreport+0xbd) [0x815903d]
./ruby [0x81968ae]
./ruby(rb_bug+0x28) [0x8196968]
./ruby [0x8063641]
./ruby [0x8067597]
./ruby(rb_gc_start+0x19) [0x8067c79]
./ruby [0x814fab0]
./ruby [0x8151e88]
./ruby [0x815576b]
./ruby(rb_vm_invoke_proc+0x76) [0x8149696]
./ruby [0x8061434]
./ruby [0x8144c1d]
./ruby [0x8149ba9]
./ruby [0x814b1e8]
./ruby(rb_eval_cmd+0xe6) [0x8156736]
./ruby [0x8063961]
./ruby(rb_protect+0x128) [0x805b358]
./ruby [0x8063900]
./ruby [0x8064b3b]
./ruby [0x8064c02]
./ruby(ruby_cleanup+0x1a4) [0x805ccd4]
./ruby(ruby_run_node+0x3a) [0x805ceea]
./ruby(main+0x5a) [0x805a95a]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7e11455]
./ruby [0x805a861]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

e$B%"%!<%H$7$^$7$?e(B

2010e$BG/e(B6e$B7ne(B1e$BF|e(B10:55 KISHIMOTO, Makoto
[email protected]:

  1. Error:
    test_cgi_core_htmltype(CGICoreTest):
    TypeError: can’t convert NoMethodError into String
    /export/home/ksmakoto/ruby-trunk/test/cgi/test_cgi_core.rb:339:in `test_cgi_core_htmltype’

9 tests, 75 assertions, 0 failures, 1 errors, 0 skips

Test run options: --seed 49582

e$B$3$l!"$$$m$s$J$H$3$m$G=P$^$9$M$'!#e(B

e$B8=;~E@$G!"0J2<$,4QB,$G$-$^$7$?!#e(B

TypeError: can’t convert Array into String
test/rake/test_fileutils.rb:130:in test_fileutils_method TypeError: can't convert Array into String test/ruby/test_basicinstructions.rb:208:in set_lvar_in_another_method’
TypeError: can’t convert Array into String
test/test_delegate.rb:111:in test_instance_method' TypeError: can't convert Array into String test/test_syslog.rb:13:in test_new’
TypeError: can’t convert NoMethodError into String
test/cgi/test_cgi_core.rb:339:in test_cgi_core_htmltype' TypeError: can't convert NoMethodError into String test/date/test_date_arith.rb:87:in test_prev’
TypeError: can’t convert NoMethodError into String
test/rake/test_fileutils.rb:130:in test_fileutils_methods_dont_leak' TypeError: can't convert NoMethodError into String test/ruby/test_alias.rb:44:in test_alias’
TypeError: can’t convert NoMethodError into String
test/ruby/test_clone.rb:24:in test_clone' TypeError: can't convert NoMethodError into String test/ruby/test_complex.rb:1070:in test_ruby19’
TypeError: can’t convert NoMethodError into String
test/ruby/test_complexrational.rb:104:in test_comp_srat' TypeError: can't convert NoMethodError into String test/ruby/test_exception.rb:312:in test_nomethoderror’
TypeError: can’t convert NoMethodError into String
test/test_delegate.rb:111:in test_instance_method' TypeError: can't convert NoMethodError into String test/test_delegate.rb:124:in test_private_method’

e$B$=$l$>$l$I$s$J%3!<%I$+$H;W$C$FD4$Y$k$He(B…

test/rake/test_fileutils.rb:130
assert_raise(NoMethodError) { obj.copy } # from FileUtils
test/ruby/test_basicinstructions.rb:208
assert_raise(NameError) { a }
test/test_delegate.rb:111
assert_raise(NoMethodError, ‘[ruby-dev:40314]#3’) {m.call}
test/test_syslog.rb:13
assert_raises(NoMethodError) {
test/cgi/test_cgi_core.rb:339
assert_raise(NoMethodError) do cgi.doctype end
test/date/test_date_arith.rb:87
assert_raise(NoMethodError) do
test/rake/test_fileutils.rb:130
assert_raise(NoMethodError) { obj.copy } # from FileUtils
test/ruby/test_alias.rb:44
assert_raise(NoMethodError) { x.foo }
test/ruby/test_clone.rb:24
assert_raise(NoMethodError) {foo.test2}
test/ruby/test_complex.rb:1070
assert_raise(NoMethodError){ Complex.new(1) }
test/ruby/test_complexrational.rb:104
assert_raise(NoMethodError){c <=> 2}
test/ruby/test_exception.rb:312
e = assert_raise(NoMethodError) {str.send(id)}
test/test_delegate.rb:111
assert_raise(NoMethodError, ‘[ruby-dev:40314]#3’) {m.call}
test/test_delegate.rb:124
assert_raise(NoMethodError) {foo.delegate_test_private}

e$B$_$4$H$K$9$Y$Fe(B assert_raise (e$B$He(B assert_raises)
e$B$G$9$J!#e(B

e$B$-$7$b$H$G$9e(B

e$B<j85$N4D6-$@$H0J2<$N%(%i!<$,=P$F$^$9!#e(B
test-all
e$B$9$k$H!JF0$-=P$9$^$G$K$($i$$;~4V$,$+$+$C$?$"$H!KF1$8$H$3$m$Ge(B
to_str e$B$,e(B
e$BL58B$K:F5"$7$Fe(B? core e$B$rEG$-$^$9!#e(B

$ …/tool/runruby.rb --extout=.ext – -e ‘GC.stress = true; load
“…/test/runner.rb”’ …/test/cgi/test_cgi_core.rb
Loaded suite -e
Started
…E…
Finished in 1.831383 seconds.

  1. Error:
    test_cgi_core_htmltype(CGICoreTest):
    TypeError: can’t convert NoMethodError into String
    /export/home/ksmakoto/ruby-trunk/test/cgi/test_cgi_core.rb:339:in
    `test_cgi_core_htmltype’

9 tests, 75 assertions, 0 failures, 1 errors, 0 skips

Test run options: --seed 49582