Hidden object$B$C$F(B?

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

e$B:G?7HG$Ne(Brubye$B$G0J2<$N%a%C%;!<%8$,=P$k$h$&$K$J$C$F$7$^$C$?$N$G$9$,e(B,
e$B$3$le(B
e$B$O$I$N$h$&$J0UL#$G$7$g$&$+e(B?

% ruby -v
ruby 1.9.2dev (2009-11-19 trunk 25848) [i686-linux]

each: method `to_s’ called on hidden object (0x9438e48)

e$B$^$?e(B, e$B$3$l$rD4$Y$F$$$?$ie(B:
e$B0J2<$N$h$&$Je(BSEGVe$B$bH/@8$9$k$h$&$K$J$C$F$7$^$$e(B
e$B$^$7$?e(B… e$B$J$s$+e(B, e$B4X78$"$k$G$7$g$&$+e(B?

rubye$B$N%P!<%8%g%s$OHyL/$K0c$$$^$9e(B.

/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:
[BUG] Segmentation fault
ruby 1.9.2dev (2009-11-18 trunk 25846) [i686-linux]

– control frame ----------
c:0037 p:---- s:0130 b:0130 l:000129 d:000129 CFUNC :write
c:0036 p:0026 s:0126 b:0126 l:000768 d:000125 LAMBDA
/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265
c:0035 p:---- s:0121 b:0121 l:000120 d:000120 FINISH
c:0034 p:---- s:0119 b:0119 l:000118 d:000118 CFUNC :dump
c:0033 p:0062 s:0114 b:0114 l:000ba8 d:000113 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863
c:0032 p:0050 s:0110 b:0110 l:000109 d:000109 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:849
c:0031 p:0011 s:0105 b:0105 l:000ba8 d:000ba8 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:859
c:0030 p:0079 s:0101 b:0101 l:000095 d:000100 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:787
c:0029 p:0019 s:0099 b:0099 l:000098 d:000098 METHOD
internal:prelude:8
c:0028 p:0013 s:0096 b:0096 l:000095 d:000095 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:780
c:0027 p:0015 s:0092 b:0092 l:000091 d:000091 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:303
c:0026 p:0118 s:0088 b:0088 l:001e8c d:000087 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:56
c:0025 p:---- s:0083 b:0083 l:000082 d:000082 FINISH
c:0024 p:---- s:0081 b:0081 l:000080 d:000080 CFUNC :call
c:0023 p:0014 s:0077 b:0077 l:0011ec d:000076 BLOCK test/testc.rb:3196
c:0022 p:---- s:0074 b:0074 l:000073 d:000073 FINISH
c:0021 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC :each
c:0020 p:0032 s:0069 b:0069 l:0011ec d:00263c BLOCK test/testc.rb:3195
c:0019 p:---- s:0065 b:0065 l:000064 d:000064 FINISH
c:0018 p:---- s:0063 b:0063 l:000062 d:000062 CFUNC :each
c:0017 p:0017 s:0060 b:0060 l:000059 d:000059 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78
c:0016 p:0073 s:0056 b:0056 l:000055 d:000055 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156
c:0015 p:0011 s:0051 b:0051 l:0011ec d:00074c BLOCK test/testc.rb:3188
c:0014 p:---- s:0047 b:0047 l:000046 d:000046 FINISH
c:0013 p:---- s:0045 b:0045 l:000044 d:000044 CFUNC :yield
c:0012 p:0014 s:0040 b:0040 l:0000dc d:000039 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81
c:0011 p:0021 s:0038 b:0038 l:000037 d:000037 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/stdout.rb:35
c:0010 p:0014 s:0034 b:0034 l:0000dc d:0000dc METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:80
c:0009 p:0043 s:0029 b:0029 l:000028 d:000028 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-each-substream-mapper.rb:26
c:0008 p:0073 s:0025 b:0025 l:000024 d:000024 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156
c:0007 p:0137 s:0020 b:0020 l:001e8c d:001f2c BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:47
c:0006 p:---- s:0016 b:0016 l:000015 d:000015 FINISH
c:0005 p:---- s:0014 b:0014 l:000013 d:000013 CFUNC :call
c:0004 p:0012 s:0011 b:0011 l:000010 d:000010 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143
c:0003 p:0077 s:0007 b:0007 l:0020f8 d:000006 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:125
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:---- s:0002 b:0002 l:000001 d:000001 TOP

/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:125:in
block in start' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143:inbasic_start’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143:in
call' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:47:inblock in start_export’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156:in
each' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-each-substream-mapper.rb:26:inbasic_each’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:80:in
yield19' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/stdout.rb:35:inreplace_stdout’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81:in
block in yield19' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81:inyield’
test/testc.rb:3188:in block in context' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156:ineach’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78:in
basic_each' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78:ineach’
test/testc.rb:3195:in block (2 levels) in context' test/testc.rb:3195:ineach’
test/testc.rb:3196:in block (3 levels) in context' test/testc.rb:3196:incall’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:56:in
block (2 levels) in start_export' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:303:inpush’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:780:in
push' <internal:prelude>:8:insynchronize’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:787:in
block in push' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:859:instore_2ndmemory’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:849:in
open_2ndmemory' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863:inblock in store_2ndmemory’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863:in
dump' /usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:inblock in delegating_block’
/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:in
`write’

– C level backtrace information

fairy processor --node 45566 --id 0(rb_vm_bugreport+0xb5) [0x81621a5]
fairy processor --node 45566 --id 0 [0x819f3ce]
fairy processor --node 45566 --id 0(rb_bug+0x28) [0x819f468]
fairy processor --node 45566 --id 0 [0x80f71e5]
[0xb801c40c]
fairy processor --node 45566 --id 0(rb_funcall+0xe1) [0x815ee81]
fairy processor --node 45566 --id 0(rb_obj_as_string+0x81) [0x8103811]
fairy processor --node 45566 --id 0 [0x8079378]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x815aab5]
fairy processor --node 45566 --id 0(rb_funcall+0x18e) [0x815ef2e]
fairy processor --node 45566 --id 0(rb_io_write+0x29) [0x80712a9]
fairy processor --node 45566 --id 0 [0x8089f38]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_yield+0x4f) [0x816103f]
fairy processor --node 45566 --id 0(rb_ary_each+0x41) [0x81716a1]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_yield+0x4f) [0x816103f]
fairy processor --node 45566 --id 0 [0x8082bf8]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x81682ed]
fairy processor --node 45566 --id 0 [0x81683a1]
/lib/i686/cmov/libpthread.so.0 [0xb7fe84b5]
/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb7efea5e]

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

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

In message “Re: [ruby-dev:39720] hidden objecte$B$C$Fe(B?”
on Thu, 19 Nov 2009 01:29:02 +0900, [email protected] (Keiju
ISHITSUKA) writes:

|e$B:G?7HG$Ne(Brubye$B$G0J2<$N%a%C%;!<%8$,=P$k$h$&$K$J$C$F$7$^$C$?$N$G$9$,e(B, e$B$3$le(B
|e$B$O$I$N$h$&$J0UL#$G$7$g$&$+e(B?
|
|% ruby -v
|ruby 1.9.2dev (2009-11-19 trunk 25848) [i686-linux]
|
|each: method `to_s’ called on hidden object (0x9438e48)

e$B!Ve(Bhidden objecte$B$N%a%=%C%I$,8F$S=P$5$l$?!W$H$$$&0UL#$G$9!#e(B
hidden obecte$B$H$O!"0l;~%%V%8%’%/%H$J$I!Ve(BRubye$B$+$i8+$($F$O$$$1e(B
e$B$J$$%
%V%8%’%/%H!W$N$3$H$G$9!#$3$l$,8F$P$l$k$H8@$&$N$O%P%0$Ge(B
e$B$9$M!#e(B

|e$B$^$?e(B, e$B$3$l$rD4$Y$F$$$?$ie(B: e$B0J2<$N$h$&$Je(BSEGVe$B$bH/@8$9$k$h$&$K$J$C$F$7$^$$e(B
|e$B$^$7$?e(B… e$B$J$s$+e(B, e$B4X78$"$k$G$7$g$&$+e(B?

e$B$o$+$j$^$;$s!#$J$K$r$7$F$3$N$h$&$JLdBj$,H/@8$7$?$+$N>pJs$,%<e(B
e$B%m$J$N$G!"$+$J$j1?$,$h$/$J$$$H$o$+$k?M$OC/$b$$$J$$$H;W$$$^$9!#e(B
e$B$;$a$F:F8=>pJs$r!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:39721] the message: “[ruby-dev:39721] Re: hidden
objecte$B$Ce(B
e$B$Fe(B?”, on Nov/19 02:28(JST) Yukihiro M. writes:

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

|each: method `to_s’ called on hidden object (0x9438e48)

e$B!Ve(Bhidden objecte$B$N%a%=%C%I$,8F$S=P$5$l$?!W$H$$$&0UL#$G$9!#e(B
hidden obecte$B$H$O!"0l;~%%V%8%’%/%H$J$I!Ve(BRubye$B$+$i8+$($F$O$$$1e(B
e$B$J$$%
%V%8%’%/%H!W$N$3$H$G$9!#$3$l$,8F$P$l$k$H8@$&$N$O%P%0$Ge(B
e$B$9$M!#e(B

e$B$(!<e(B Rubye$BK\BN$N$C$F$3$H$G$9$Me(B?

|e$B$^$?e(B, e$B$3$l$rD4$Y$F$$$?$ie(B: e$B0J2<$N$h$&$Je(BSEGVe$B$bH/@8$9$k$h$&$K$J$C$F$7$^$$e(B
|e$B$^$7$?e(B… e$B$J$s$+e(B, e$B4X78$"$k$G$7$g$&$+e(B?

e$B$o$+$j$^$;$s!#$J$K$r$7$F$3$N$h$&$JLdBj$,H/@8$7$?$+$N>pJs$,%<e(B
e$B%m$J$N$G!"$+$J$j1?$,$h$/$J$$$H$o$+$k?M$OC/$b$$$J$$$H;W$$$^$9!#e(B
e$B$;$a$F:F8=>pJs$r!#e(B

e$B$+$J$j3N<B$K:F8=$9$k$N$G$9$,e(B…
fairy+DeepConnecte$B$J$N$G$+$J$j%3!<%INLe(B
e$B$O$"$j$^$9e(B. e$B$=$l$GD4$Y$/$@$5$$$H8@$o$l$F$b:$$j$^$9$h$M$'e(B?

  1. git bisecte$B$G%P%0$,F~$C$?e(Brubye$B$N%3%_%C%H$rC5$9e(B.
    e$B$=$3$+$i%=!<%9%3!<%Ie(B
    e$B%Y!<%9$G%P%0$r8+$D$1$F$b$i$&e(B.
  2. e$B:F8=$9$k$h$&$K$J9J$j9~$s$@%=!<%9$r:n@.$9$ke(B.

e$B$,e(B, e$B$"$k$H;W$$$^$9e(B. 1e$B$NJ}$,3Z$=$&$J$s$G$9$,e(B,
e$B$$$+$,$G$7$g$&e(B?

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

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

In message “Re: [ruby-dev:39726] Re: hidden objecte$B$C$Fe(B?”
on Thu, 19 Nov 2009 19:45:21 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|>e$B!Ve(Bhidden objecte$B$N%a%=%C%I$,8F$S=P$5$l$?!W$H$$$&0UL#$G$9!#e(B
|>hidden obecte$B$H$O!"0l;~%%V%8%’%/%H$J$I!Ve(BRubye$B$+$i8+$($F$O$$$1e(B
|>e$B$J$$%
%V%8%’%/%H!W$N$3$H$G$9!#$3$l$,8F$P$l$k$H8@$&$N$O%P%0$Ge(B
|>e$B$9$M!#e(B
|
|e$B$(!<e(B Rubye$BK\BN$N$C$F$3$H$G$9$Me(B?

e$B4pK\E*$K$Oe(BRubye$B$N%P%0$@$H;W$$$^$9!#3HD%%i%$%V%i%j$H$+;H$C$F$ke(B
e$B$He(BRubye$B$N$;$$$G$J$/$F$bH/@8$9$k2DG=@-$O$"$j$^$9$1$I!#e(B

|e$B$+$J$j3N<B$K:F8=$9$k$N$G$9$,e(B… fairy+DeepConnecte$B$J$N$G$+$J$j%3!<%INLe(B
|e$B$O$"$j$^$9e(B. e$B$=$l$GD4$Y$/$@$5$$$H8@$o$l$F$b:$$j$^$9$h$M$'e(B?

e$B$O$$!#e(B

|1. git bisecte$B$G%P%0$,F~$C$?e(Brubye$B$N%3%_%C%H$rC5$9e(B. e$B$=$3$+$i%=!<%9%3!<%Ie(B
| e$B%Y!<%9$G%P%0$r8+$D$1$F$b$i$&e(B.
|2. e$B:F8=$9$k$h$&$K$J9J$j9~$s$@%=!<%9$r:n@.$9$ke(B.
|
|e$B$,e(B, e$B$"$k$H;W$$$^$9e(B. 1e$B$NJ}$,3Z$=$&$J$s$G$9$,e(B, e$B$$$+$,$G$7$g$&e(B?

e$B$H$j$"$($:$O!"$I$C$A$G$b$$$$$G$9!#$H$K$+$/>pJs$,$J$$$3$H$K$Oe(B
e$B<j$NBG$A$h$&$,$"$j$^$;$s!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:39727] the message: “[ruby-dev:39727] Re: hidden
objecte$B$Ce(B
e$B$Fe(B?”, on Nov/19 21:10(JST) Yukihiro M. writes:

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

e$B4pK\E*$K$Oe(BRubye$B$N%P%0$@$H;W$$$^$9!#3HD%%i%$%V%i%j$H$+;H$C$F$ke(B
e$B$He(BRubye$B$N$;$$$G$J$/$F$bH/@8$9$k2DG=@-$O$"$j$^$9$1$I!#e(B

e$B$?$7$+$Ke(B.

|1. git bisecte$B$G%P%0$,F~$C$?e(Brubye$B$N%3%_%C%H$rC5$9e(B. e$B$=$3$+$i%=!<%9%3!<%Ie(B
| e$B%Y!<%9$G%P%0$r8+$D$1$F$b$i$&e(B.
|2. e$B:F8=$9$k$h$&$K$J9J$j9~$s$@%=!<%9$r:n@.$9$ke(B.
|
|e$B$,e(B, e$B$"$k$H;W$$$^$9e(B. 1e$B$NJ}$,3Z$=$&$J$s$G$9$,e(B, e$B$$$+$,$G$7$g$&e(B?

e$B$H$j$“$($:$O!”$I$C$A$G$b$$$$$G$9!#$H$K$+$/>pJs$,$J$$$3$H$K$Oe(B
e$B<j$NBG$A$h$&$,$"$j$^$;$s!#e(B

e$BN;2re(B. e$B$H$j$"$($:e(B, 1e$B$N$[$&$G8+$D$1$^$7$?e(B.

e$B0J2<$N%3%_%C%H$G$9e(B.
e$B3N$+$K%^!<%7%c%k$^$o$j$GNc30$,=P$F$$$^$9$7$Me(B.


emperor2v1% git show
commit f6f89b880a80c1f47e6fcb6caf46d6ed35da3089
Author: nobu nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Date: Sun Oct 4 10:30:56 2009 +0000

* marshal.c (struct {dump,load}_arg): manage with dfree, instead
  of using local variable which may be moved by context switch.
  [ruby-dev:39425]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25230 

b2dd03c8-39d4-4d8f-98ff-823fe69b080e

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by _ wanabe)

e$B:F8=$G$-$J$$$N$G$o$+$j$^$;$s$,!"$3$l$G$I$&$G$7$g$&$+!#e(B

Index: marshal.c

— marshal.c (revision 25922)
+++ marshal.c (working copy)
@@ -166,6 +166,7 @@
return;
rb_mark_set(p->data);
rb_mark_hash(p->compat_tbl);

  • rb_gc_mark(p->str);
    }

static void

http://redmine.ruby-lang.org/issues/show/2386

e$B0J2<$N%3%%C%H0J9!"8e=R$N8=>]$,H/@8$9$k$=$&$G$9!#e(B

Author: nobu nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Date: Sun Oct 4 10:30:56 2009 +0000

  • marshal.c (struct {dump,load}_arg): manage with dfree, instead
    of using local variable which may be moved by context switch.
    [ruby-dev:39425]

http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25230


e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

e$B:G?7HG$Ne(Brubye$B$G0J2<$N%a%C%;!<%8$,=P$k$h$&$K$J$C$F$7$^$C$?$N$G$9$,e(B,
e$B$3$le(B
e$B$O$I$N$h$&$J0UL#$G$7$g$&$+e(B?

% ruby -v
ruby 1.9.2dev (2009-11-19 trunk 25848) [i686-linux]

each: method `to_s’ called on hidden object (0x9438e48)

e$B$^$?e(B, e$B$3$l$rD4$Y$F$$$?$ie(B:
e$B0J2<$N$h$&$Je(BSEGVe$B$bH/@8$9$k$h$&$K$J$C$F$7$^$$e(B
e$B$^$7$?e(B… e$B$J$s$+e(B, e$B4X78$"$k$G$7$g$&$+e(B?

rubye$B$N%P!<%8%g%s$OHyL/$K0c$$$^$9e(B.

/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:
[BUG] Segmentation fault
ruby 1.9.2dev (2009-11-18 trunk 25846) [i686-linux]

– control frame ----------
c:0037 p:---- s:0130 b:0130 l:000129 d:000129 CFUNC :write
c:0036 p:0026 s:0126 b:0126 l:000768 d:000125 LAMBDA
/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265
c:0035 p:---- s:0121 b:0121 l:000120 d:000120 FINISH
c:0034 p:---- s:0119 b:0119 l:000118 d:000118 CFUNC :dump
c:0033 p:0062 s:0114 b:0114 l:000ba8 d:000113 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863
c:0032 p:0050 s:0110 b:0110 l:000109 d:000109 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:849
c:0031 p:0011 s:0105 b:0105 l:000ba8 d:000ba8 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:859
c:0030 p:0079 s:0101 b:0101 l:000095 d:000100 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:787
c:0029 p:0019 s:0099 b:0099 l:000098 d:000098 METHOD
internal:prelude:8
c:0028 p:0013 s:0096 b:0096 l:000095 d:000095 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:780
c:0027 p:0015 s:0092 b:0092 l:000091 d:000091 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:303
c:0026 p:0118 s:0088 b:0088 l:001e8c d:000087 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:56
c:0025 p:---- s:0083 b:0083 l:000082 d:000082 FINISH
c:0024 p:---- s:0081 b:0081 l:000080 d:000080 CFUNC :call
c:0023 p:0014 s:0077 b:0077 l:0011ec d:000076 BLOCK test/testc.rb:3196
c:0022 p:---- s:0074 b:0074 l:000073 d:000073 FINISH
c:0021 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC :each
c:0020 p:0032 s:0069 b:0069 l:0011ec d:00263c BLOCK test/testc.rb:3195
c:0019 p:---- s:0065 b:0065 l:000064 d:000064 FINISH
c:0018 p:---- s:0063 b:0063 l:000062 d:000062 CFUNC :each
c:0017 p:0017 s:0060 b:0060 l:000059 d:000059 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78
c:0016 p:0073 s:0056 b:0056 l:000055 d:000055 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156
c:0015 p:0011 s:0051 b:0051 l:0011ec d:00074c BLOCK test/testc.rb:3188
c:0014 p:---- s:0047 b:0047 l:000046 d:000046 FINISH
c:0013 p:---- s:0045 b:0045 l:000044 d:000044 CFUNC :yield
c:0012 p:0014 s:0040 b:0040 l:0000dc d:000039 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81
c:0011 p:0021 s:0038 b:0038 l:000037 d:000037 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/stdout.rb:35
c:0010 p:0014 s:0034 b:0034 l:0000dc d:0000dc METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:80
c:0009 p:0043 s:0029 b:0029 l:000028 d:000028 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-each-substream-mapper.rb:26
c:0008 p:0073 s:0025 b:0025 l:000024 d:000024 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156
c:0007 p:0137 s:0020 b:0020 l:001e8c d:001f2c BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:47
c:0006 p:---- s:0016 b:0016 l:000015 d:000015 FINISH
c:0005 p:---- s:0014 b:0014 l:000013 d:000013 CFUNC :call
c:0004 p:0012 s:0011 b:0011 l:000010 d:000010 METHOD
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143
c:0003 p:0077 s:0007 b:0007 l:0020f8 d:000006 BLOCK
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:125
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:---- s:0002 b:0002 l:000001 d:000001 TOP

/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:125:in
block in start' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143:in basic_start’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:143:in
call' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:47:in block in start_export’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156:in
each' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-each-substream-mapper.rb:26:in basic_each’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:80:in
yield19' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/stdout.rb:35:in replace_stdout’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81:in
block in yield19' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/share/block-source.rb:81:in yield’
test/testc.rb:3188:in block in context' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/njob.rb:156:in each’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78:in
basic_each' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/nfile.rb:78:in each’
test/testc.rb:3195:in block (2 levels) in context' test/testc.rb:3195:in each’
test/testc.rb:3196:in block (3 levels) in context' test/testc.rb:3196:in call’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/n-group-by.rb:56:in
block (2 levels) in start_export' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:303:in push’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:780:in
push' <internal:prelude>:8:in synchronize’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:787:in
block in push' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:859:in store_2ndmemory’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:849:in
open_2ndmemory' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863:in block in store_2ndmemory’
/home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:863:in
dump' /usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:in block in delegating_block’
/usr/local/apps/rubyware/ruby-1.9.2-20091118/lib/ruby/1.9.1/delegate.rb:265:in
`write’

– C level backtrace information

fairy processor --node 45566 --id 0(rb_vm_bugreport+0xb5) [0x81621a5]
fairy processor --node 45566 --id 0 [0x819f3ce]
fairy processor --node 45566 --id 0(rb_bug+0x28) [0x819f468]
fairy processor --node 45566 --id 0 [0x80f71e5]
[0xb801c40c]
fairy processor --node 45566 --id 0(rb_funcall+0xe1) [0x815ee81]
fairy processor --node 45566 --id 0(rb_obj_as_string+0x81) [0x8103811]
fairy processor --node 45566 --id 0 [0x8079378]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x815aab5]
fairy processor --node 45566 --id 0(rb_funcall+0x18e) [0x815ef2e]
fairy processor --node 45566 --id 0(rb_io_write+0x29) [0x80712a9]
fairy processor --node 45566 --id 0 [0x8089f38]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_yield+0x4f) [0x816103f]
fairy processor --node 45566 --id 0(rb_ary_each+0x41) [0x81716a1]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_yield+0x4f) [0x816103f]
fairy processor --node 45566 --id 0 [0x8082bf8]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x8062ec4]
fairy processor --node 45566 --id 0 [0x814d71d]
fairy processor --node 45566 --id 0 [0x8151689]
fairy processor --node 45566 --id 0 [0x8152bbd]
fairy processor --node 45566 --id 0 [0x815511d]
fairy processor --node 45566 --id 0 [0x8159399]
fairy processor --node 45566 --id 0(rb_vm_invoke_proc+0x81) [0x8159b61]
fairy processor --node 45566 --id 0 [0x81682ed]
fairy processor --node 45566 --id 0 [0x81683a1]
/lib/i686/cmov/libpthread.so.0 [0xb7fe84b5]
/lib/i686/cmov/libc.so.6(clone+0x5e) [0xb7efea5e]

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

2009e$BG/e(B11e$B7ne(B25e$BF|e(B23:08 _ wanabe [email protected]:

  • rb_gc_mark(p->str);
    }

static void

e$B$$$9$4$$!#$3$l$C$]$$M=46$,$7$^$9$M!#e(B

e$B0J2<$N$h$&$Ke(B marshal_dump e$B$NCf$Ge(B GC e$B$r5/$3$5$;$k$H!"e(B

diff --git a/marshal.c b/marshal.c
index 7acc495…cd747b8 100644
— a/marshal.c
+++ b/marshal.c
@@ -941,6 +941,7 @@ marshal_dump(int argc, VALUE *argv)
port = arg->str;
}

  • rb_gc();
    w_byte(MARSHAL_MAJOR, arg);
    w_byte(MARSHAL_MINOR, arg);

e$B0J2<$N%3!<%I$Ge(B SEGV
e$B$7$^$9$N$G!"$$$:$l$K$;$h$3$N%Q%C%A$OEv$F$k$Y$-$@$He(B
e$B;W$$$^$9!#e(B

$ ./miniruby -e ’
class C
def marshal_dump
GC.start
“”
end
end
o = Object.new
def o.write(s)
s
end
Marshal.dump(C.new, o)

-e:4: [BUG] rb_gc_mark(): unknown data type 0x0(0x8248bac) corrupted
object
(snip)

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

In message “Re: [ruby-dev:39774] [Bug #2386] r25230 causes SEGV arround
Marshal”
on Wed, 25 Nov 2009 23:08:16 +0900, _ wanabe [email protected]
writes:

|e$B:F8=$G$-$J$$$N$G$o$+$j$^$;$s$,!"$3$l$G$I$&$G$7$g$&$+!#e(B
|
|Index: marshal.c
|===================================================================
|— marshal.c (revision 25922)
|+++ marshal.c (working copy)

e$B%3%_%C%H$7$F$/$@$5$$!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

e$BBP1~$"$j$,$H$&$4$6$$$^$9e(B.

In [ruby-dev:39774] the message: “[ruby-dev:39774] [Bug #2386] r25230
causes SEGV arround Marshal”, on Nov/25 23:08(JST) _ wanabe writes:

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by _ wanabe)

e$B:F8=$G$-$J$$$N$G$o$+$j$^$;$s$,!"$3$l$G$I$&$G$7$g$&$+!#e(B

SEGVe$B$9$k3NN($O$+$J$j8:$j$^$7$?e(B. e$BBe$o$j$KNc30e(B:

[P]#7 njob.rb[172] NFile#rescue in each: method to_s' called on unexpected T_NONE object (0x9bc8f64 flags=0x2000 klass=0x0) /usr/local/apps/rubyware/ruby-1.9.2-20091126/lib/ruby/1.9.1/delegate.rb:265:inwrite’
/usr/local/apps/rubyware/ruby-1.9.2-20091126/lib/ruby/1.9.1/delegate.rb:265:in
`block in delegating_block’
/

e$B$NIQEY$,9b$/$J$C$?5$$,$7$^$9e(B.
e$BAm9gE*$JH/@83NN($OF1$846$8$G$9e(B…

e$B$"$He(B,

e$B$A$J$_$K!"e(BMarshal.dump(e, io) e$B$Ge(B ioe$B$Ke(BTempfilee$B$r;H$C$F$$$k$H8@$$$^$7e(B
e$B$?$,!"e(Btempfilee$B$+$i<B:]$Ne(Bioe$B$r<h$j=P$7$F!“D>@$=$A$i$Ke(Bdumpe$B$9$k$h$&$K$9e(B
e$B$k$H!”%(%i!<$OH/@8$7$J$/$J$j$^$9!#e(B

e$B$H8@$$$^$7$?$,e(B, e$B$3$l$G$be(B,
e$B$+$J$jIQEY$O2<$,$j$^$9$,e(BSEGVe$B$OH/@8$9$k$h$&$Ge(B
e$B$9e(B(e$B:G?7HG$G$O;n$;$F$$$^$;$se(B). e$BIQEYE*$K$Oe(B,
Tempfilee$B$r;H$&>l9g$Oe(B, e$B?tIC0Je(B
e$BFb$K3N<B$KH/@8$7e(B,
e$BD>@$Ne(Bioe$B;EMM$N>l9g$O?t;~4V$Ke(B1e$B2sDxEY$N3d9g$0$i$$$K$Je(B
e$B$k$h$&$G$9e(B.

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by _ wanabe)

e$B%9%F!<%?%9e(B Closede$B$+$ie(BAssignede$B$KJQ99e(B

e$B$9$_$^$;$s!#4V0c$C$FJD$8$F$7$^$$$^$7$?!#e(B

http://redmine.ruby-lang.org/issues/show/2386

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!<%?%9e(B Assignede$B$+$ie(BFeedbacke$B$KJQ99e(B

e$B$$$7$D$+$5$se(B
e$B1sF#$G$9!#e(B

e$B$3$NLdBj$O:#$G$bH/>I$7$F$$$^$9$G$7$g$&$+!#e(B
e$B$7$F$$$k$H$7$?$i!":F8=$5$;$k$?$a$N%3!<%I0l<0$H>:Y$J<j=g$r8x3+$7$Fe(B
e$B$$$?$@$/$3$H$O2DG=$G$7$g$&$+!#e(B

e$BL5M}$H$$$&$3$H$J$i!"$I$&$K$bD>$7$h$&$,$J$5$=$&$G$9$M$(!D!D!#e(B


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/2386

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by _ wanabe)

e$B%9%F!<%?%9e(B Assignede$B$+$ie(BClosede$B$KJQ99e(B
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r25927.
Yui, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


http://redmine.ruby-lang.org/issues/show/2386

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:41080] the message: “[ruby-dev:41080] Bug
#2386
r25230 causes SEGV arround Marshal”, on Apr/27
22:23(JST) Yusuke E. writes:

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)
e$B%9%F!<%?%9e(B Assignede$B$+$ie(BFeedbacke$B$KJQ99e(B

e$B$$$7$D$+$5$se(B
e$B1sF#$G$9!#e(B

e$B$3$NLdBj$O:#$G$bH/>I$7$F$$$^$9$G$7$g$&$+!#e(B

e$B$&!<$se(B. e$B2sHr$9$k$h$&$K%3!<%I$rJQ99$7$F$7$^$C$?$N$Ge(B…
e$B<h$j$"$($:e(B, e$BJD$8$F$/$@$5$C$F$+$^$$$^$;$se(B.

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B%A%1%C%He(B #2386 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$BM%@hEYe(B Normale$B$+$ie(BLowe$B$KJQ99e(B

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

2010e$BG/e(B4e$B7ne(B28e$BF|e(B17:33 e$B@PDM7=<ye(B
[email protected]:

e$B$3$NLdBj$O:#$G$bH/>I$7$F$$$^$9$G$7$g$&$+!#e(B

e$B$&!<$se(B. e$B2sHr$9$k$h$&$K%3!<%I$rJQ99$7$F$7$^$C$?$N$Ge(B…
e$B<h$j$"$($:e(B, e$BJD$8$F$/$@$5$C$F$+$^$$$^$;$se(B.

e$B$&!<$s!"$=$&$G$9$+!#e(B

e$B$I$N$h$&$K2sHr$7$?$N$+$r65$($FD:$1$k$H!":#8e;w$?$h$&$JJs9p$,e(B
e$BMh$?$H$-$N%G%P%C%0$N;29M$K$J$C$?$j!"F1$8>I>u$K6l$7$`?M$N=u$1$Ke(B
e$B$J$C$?$j$9$k$+$b$7$l$^$;$s!#e(B

e$B$H$j$"$($:M%@hEY$re(B Low e$B$K$7$F$*$-$^$9!#e(B


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/2386