# Jump in ensure dumps core

**URL:** <https://www.ruby-forum.com/t/jump-in-ensure-dumps-core/111768>\
**Category:** Development\
**Created:** [August 10, 2007, 5:12pm UTC](https://www.ruby-forum.com/t/jump-in-ensure-dumps-core/111768 "2007-08-10T17:12:57Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2007, 5:12pm UTC](https://www.ruby-forum.com/t/jump-in-ensure-dumps-core/111768/1 "2007-08-10T17:12:57Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 14, 2007, 1:10pm UTC](https://www.ruby-forum.com/t/jump-in-ensure-dumps-core/111768/2 "2007-08-14T13:10:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 16, 2007, 6:18pm UTC](https://www.ruby-forum.com/t/jump-in-ensure-dumps-core/111768/3 "2007-08-16T18:18:37Z")

</div>

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
