Jump in ensure dumps core

e$B1sF#$H?=$7$^$9!#e(B

1.9 e$B$Ge(B ensure e$B$NCf$Ge(B illigal e$B$G$J$$e(B next e$B$de(B redo
e$B$r$9$k$HMn$A$^$9!#e(B

$ ./ruby -ve ‘1.times { begin ensure next end }’
ruby 1.9.0 (2007-08-10 patchlevel 0) [i686-linux]
-e:1: – control frame ----------
c:0006 p:0003 s:0012 b:0011 l:000004 d:000010 BLOCK -e:1
c:0005 p:---- s:0010 b:0010 l:000009 d:000009 FINISH
c:0004 p:---- s:0008 b:0008 l:000007 d:000007 CFUNC :times
c:0003 p:0008 s:0005 b:0005 l:000004 d:000004 TOP -e:1
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------

DBG> : “-e:1:in times'" DBG> : "-e:1:in'”
– backtrace of native function call (Use addr2line) –
0x80dac55
0x80f4093
0x80f415b
0x80d8c95
0x80d9554
0x80d26f5
0x805977e
0x80710af
0x80d3269
0x80d5de5
0x80d9554
0x80d988b
0x8059229
0x805d79d
0x8056df2
0xb7e27ea8
0x8056d21

[BUG] Stack consistency error (sp: 12, bp: 11)
ruby 1.9.0 (2007-08-10) [i686-linux]

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

$ ./ruby -ve ‘1.times { begin ensure redo end }’
ruby 1.9.0 (2007-08-10 patchlevel 0) [i686-linux]
-e:1: – control frame ----------
c:0006 p:0001 s:302822400 b:0011 l:000004 d:000010 BLOCK -e:1
c:0005 p:---- s:0010 b:0010 l:000009 d:000009 FINISH
c:0004 p:---- s:0008 b:0008 l:000007 d:000007 CFUNC :times
c:0003 p:0008 s:0005 b:0005 l:000004 d:000004 TOP -e:1
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------

SEGV recieved in SEGV handler

next e$B$N>l9g$N%P%$%H%3!<%I$r8+$?$H$3$m0J2<$N$h$&$K$J$C$F$$$^$7$?e(B
(e$BCm<a$O;d$N2r<ae(B) e$B!#e(B

0000 putnil – begin e$B@a$N7k2Le(B
0001 putnil – next e$B$N0z?te(B
0002 jump 4 – next e$B$N%8%c%s%We(B
0004 leave

e$B$D$^$j!"e(Bensure e$B@aFb$Ne(B next e$B$,!"e(Bbegin
e$B@a$N7k2L$,%9%?%C%/$K5M$^$l$Fe(B
e$B$$$k$3$H$rL5;k$7$F%8%c%s%W$9$k$?$a!"e(BStack consistency error
e$B$K$J$ke(B
e$B$s$@$H;W$$$^$9!#e(B

ensure e$B@aFb$Ne(B next e$B$de(B redo e$B$Ge(B poped
e$B$,??$N;~$O!"e(Bnext e$B$de(B redo e$B$NA0$Ke(B
pop e$BL?Na$rA^F~$9$l$PD>$k$+$b$7$l$^$;$se(B (compile_data e$B$Ke(B
ensure e$B@aFbe(B
e$B$+$I$&$+H=CG$G$-$k%U%i%0$J$I$,$_$D$+$i$J$+$C$?$N$G;n$7$F$^$;$se(B)
e$B!#e(B

redo e$B$NJ}$O$A$c$s$HDI$C$F$$$J$$$N$GJL$N860x$+$b$7$l$^$;$s!#e(B
e$B$H$j$"$($:%P%$%H%3!<%I$O0J2<$N$h$&$K$J$C$F$$$^$7$?!#e(B

0000 putnil
0001 jump 0
0003 leave

e$B<XB-$G$9$,!"e(BVM::InstructionSequence

e$B$,$d$C$Q$jD9$9$.$FIT9,$G$9!#e(B

e$B$"$H!"%P%$%H%3!<%I$N<B9T%H%l!<%9$r=P$9%3%s%Q%$%k;~%*%W%7%g%s$H$+e(B

e$B$J$$$G$9$+!)e(B

e$B!!$5$5$@$G$9!#e(B

Yusuke ENDOH wrote:

1.9 e$B$Ge(B ensure e$B$NCf$Ge(B illigal e$B$G$J$$e(B next e$B$de(B redo e$B$r$9$k$HMn$A$^$9!#e(B

e$B$s$@$H;W$$$^$9!#e(B
e$B!!$O$$!#e(B

ensure e$B@aFb$Ne(B next e$B$de(B redo e$B$Ge(B poped e$B$,??$N;~$O!"e(Bnext e$B$de(B redo e$B$NA0$Ke(B
pop e$BL?Na$rA^F~$9$l$PD>$k$+$b$7$l$^$;$se(B (compile_data e$B$Ke(B ensure e$B@aFbe(B
e$B$+$I$&$+H=CG$G$-$k%U%i%0$J$I$,$_$D$+$i$J$+$C$?$N$G;n$7$F$^$;$se(B) e$B!#e(B

e$B!!e(Bensure e$B$NCf$Ne(B next/redo e$B$NA0$Ke(B emptstack
e$B$rF~$l$k$N$,$h$5$=$&$J$-e(B
e$B$,$7$F$-$^$7$?!#$=$b$=$b!"e(Bnext/redo
e$B$NA0$K$OI,$:F~$l$k$h$&$K$7$h$&$+e(B
e$B$J$!!#e(B

e$B!!$C$F!"$3$l$r$$$&$J$i@hF|$Ne(B stack consistency error
e$B$b$J$s$H$G$b$Je(B
e$B$j$=$&$G$9$M!#e(B

redo e$B$NJ}$O$A$c$s$HDI$C$F$$$J$$$N$GJL$N860x$+$b$7$l$^$;$s!#e(B
e$B$H$j$"$($:%P%$%H%3!<%I$O0J2<$N$h$&$K$J$C$F$$$^$7$?!#e(B

0000 putnil
0001 jump 0
0003 leave

e$B!!$I$s$I$s@Q$s$G$$$C$F%9%?%C%/$,$"$U$l$A$c$C$F$k$s$G$9$M!#e(B

e$B<XB-$G$9$,!"e(BVM::InstructionSequence e$B$,$d$C$Q$jD9$9$.$FIT9,$G$9!#e(B

e$B!!e(BISeq e$B$H$+$K$9$k$+$J$!!#e(B

e$B!!<+J,$O!“e(B$(srcdir)/test.rb
e$B$H$$$&%U%!%$%k$K%W%m%0%i%`$r=q$$$Fe(B make
parse
e$B$H$9$k$H%G%#%9%”%;%s%V%k$9$k!"$H$$$&;EAH$_$r;H$C$F$$$k$N$G$a$Ce(B
e$B$?$K;H$o$J$$$s$G$9$h$M!#e(B

e$B!!$D$$$G$K!"e(Bmake run e$B$H$9$k$H!"e(B$(srcdir)/test.rb e$B$re(B
miniruby e$B$G<B9Te(B
e$B$7$^$9!#e(B

e$B$"$H!"%P%$%H%3!<%I$N<B9T%H%l!<%9$r=P$9%3%s%Q%$%k;~%*%W%7%g%s$H$+e(B

e$B$J$$$G$9$+!)e(B

e$B!!e(BVMDEBUG e$B$H$$$&%^%/%m$,e(B vm.h e$B$K$"$j$^$9!#e(B1
e$B0J>e$K$9$k$H!"<B9T;~$K$$e(B
e$B$m$$$m$H>pJs$rEG$/$h$&$K$J$j$^$9!#$,!"D9$$$3$H%a%s%F$7$F$$$J$+$C$?$Ne(B
e$B$G$I$l$/$i$$;H$$$b$N$K$J$k$+$o$+$j$^$;$s!#e(B

e$B!!$5$5$@$G$9!#e(B

SASADA Koichi wrote:

Yusuke ENDOH wrote:

1.9 e$B$Ge(B ensure e$B$NCf$Ge(B illigal e$B$G$J$$e(B next e$B$de(B redo e$B$r$9$k$HMn$A$^$9!#e(B

e$B!!$3$NJU!“D>$7$^$7$?!#$?$V$s!”$b$&Bg>fIW$@$H;W$&$s$G$9$,!#e(B