# \[Bug #3136\] reuse of singleton method definition causes SEGV

**URL:** <https://www.ruby-forum.com/t/bug-3136-reuse-of-singleton-method-definition-causes-segv/186798>\
**Category:** Development\
**Created:** [April 12, 2010, 3:45pm UTC](https://www.ruby-forum.com/t/bug-3136-reuse-of-singleton-method-definition-causes-segv/186798 "2010-04-12T15:45:53Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 12, 2010, 3:45pm UTC](https://www.ruby-forum.com/t/bug-3136-reuse-of-singleton-method-definition-causes-segv/186798/1 "2010-04-12T15:45:53Z")

</div>

Bug #3136: reuse of singleton method definition causes SEGV  
[http://redmine.ruby-lang.org/issues/show/3136](http://redmine.ruby-lang.org/issues/show/3136)

e$B5/I\<\<Te(B: Yusuke E.  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Normal  
Target version: 1.9.2  
ruby -v: ruby 1.9.2dev (2010-04-12 trunk 27317) [i686-linux]

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

e$B0J2\<$Ge(B SEGV e$B$7$^$9!#e(B

def overlaid(obj)  
class \<\< obj  
def reverse  
super  
end  
end  
end

overlaid(str = “123”) # (1)  
overlaid(ary = [1,2,3]) # (2)  
str.reverse # (3) =\> SEGV

e$B0lO"$NN.$l$r@bL@$9$k$He(B:

- (1) e$B$K$h$C$F!"e(Breverse e$B$Ne(B iseq e$B$,e(B “123”  
e$B$N%a%=%C%I$H$J$k!#e(B  
(reverse e$B$Ne(B iseq e$B$Ne(B klass e$B$K!Ve(BString  
e$B$r7Q\>5$7$?FC0[%/%i%9!We(B  
e$B$,%;%C%H$5$l$ke(B)

- (2) e$B$K$h$C$F!"e(Breverse e$B$Ne(B iseq e$B$,e(B [1,2,3]  
e$B$N%a%=%C%I$H$J$ke(B  
(reverse e$B$Ne(B iseq e$B$Ne(B klass e$B$K!Ve(BArray  
e$B$r7Q\>5$7$?FC0[%/%i%9!We(B  
e$B$,e(B _e$B\>e=q$-e(B_ e$B$5$l$ke(B)

- (3) e$B$K$h$C$F!"e(BString e$B$N%$%s%9%?%s%9$re(B self e$B$H$7$Fe(B  
reverse  
e$B$Ne(B iseq e$B$,\<B9T$5$l$k!#$=$NCf$Ne(B super  
e$B$G8=:\_\<B9TCf$Ne(B iseq  
e$B$Ne(B klass (= Array e$B$r7Q\>5$7$?FC0[%/%i%9e(B)  
e$B$r85$K8F$S=P$9e(B  
e$B%a%=%C%I$r7h$a$k!#$9$k$He(B Array#reverse  
e$B$,A\*$P$l$F$7$^$&!#e(B

- String e$B$N%$%s%9%?%s%9$re(B self e$B$H$7$Fe(B rb\_ary\_reverse  
e$B$,\<B9Te(B  
e$B$5$l$F$7$^$&!#e(B

iseq e$B$Ne(B klass e$B$Ke(B super  
e$B$N%3%s%F%-%9%H\>pJs$r;}$?$;$F$$$k@\_7W$,e(B  
e$B%P%0$@$H;W$$$^$7$?!#e(B

e$B2r7hJ}K!$H$7$F$O!"e(B

1. rb\_iseq\_t e$B0J30$Ge(B super e$B$N%3%s%F%-%9%H\>pJs$r4IM}$9$ke(B  
(Ruby e$B%l%Y%k$N%a%=%C%I$G$be(B rb\_method\_entry\_t e$B$Ne(B klass  
e$B$re(B  
e$B;H$&$h$&$K$9$k!)e(B)

2. e$B%a%=%C%I$rDj5A$9$k$?$S$Ke(B rb\_iseq\_t e$B$rJ#@=$9$ke(B

e$B$r;W$$$D$-$^$7$?$,!"$I$A$i$b7k9=%?%U$=$&$JJQ99$G$9!#e(B

e$B0BDj$5$;$k$N$K;~4V$,$+$+$k$3$H$,M=A[$5$l$k$?$a!"$,$s$P$C$Fe(B  
e$BAa$/D\>$7$F$/$@$5$$e(B \> e$B$5$5$@$5$s!#e(B

e$B$^$?!"e(B[ruby-dev:40458] e$B$N=$@5$b5^$.L$G$\*4j$$$7$^$9!#e(B

–  
Yusuke E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 17, 2010, 5:35am UTC](https://www.ruby-forum.com/t/bug-3136-reuse-of-singleton-method-definition-causes-segv/186798/2 "2010-04-17T05:35:44Z")

</div>

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

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

e$B0J2\<$G$be(B SEGV e$B$^$?$OL$Dj5A5sF0$r$7$^$9!#e(B

Class.new do  
define\_method(:foo) { super() }.call  
end

define\_method e$B$Ke(B Proc e$B$,EPO?$5$l$k$3$H$G!"e(BProc  
e$B$N%V%m%C%/$Ne(B iseq  
e$B$Ne(B klass e$B$,99?7$5$l$F$7$^$$$^$9!#e(B  
e$B$=$Ne(B Proc e$B$rD\>@\8F$S=P$9$H!"e(Bcfp e$B$Ke(B method\_entry  
e$B$,\>h$i$J$$$1$l$Ie(B  
super e$B@h$N8uJd$K$J$C$F$7$^$$!"Mn$A$k$h$&$G$9!#e(B

e$B%V%m%C%/$Ne(B iseq e$B$Ne(B klass e$B$r85$Ke(B super  
e$B@h$r7h$a$F$$$k$N$,0-$$$N$G!"e(B  
e$BF1$8860x$H8@$($^$9!#e(B

e$B0c$&LdBj$+$HG:$s$@$N$G!"EPO?$7$F$\*$-$^$9!#e(B

## – Yusuke E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

[http://redmine.ruby-lang.org/issues/show/3136](http://redmine.ruby-lang.org/issues/show/3136)

---

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 17, 2010, 5:46am UTC](https://www.ruby-forum.com/t/bug-3136-reuse-of-singleton-method-definition-causes-segv/186798/3 "2010-04-17T05:46:51Z")

</div>

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

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

e$B%A%1%C%H=EJ#\>pJs$NJdB-$G$9!#e(B

e$B$3$N%A%1%C%H$G:G=i$K@bL@$7$?FbMF$Oe(B #2502 e$B$N=EJ#$G$7$?!#e(B

e$BJdB-$G@bL@$7$?FbMFe(B (define\_method e$B$Ne(B Proc e$B$ND\>@\e(B call)  
e$B$Oe(B  
#2420 e$B$N=EJ#$G$7$?!#e(B

e$B$^$?!"JdB-$G@bL@$7$?FbMF$Oe(B #2402 e$B$N%Q%C%A$G!"e(BSEGV  
e$B$K;j$kA0$Ke(B  
e$BNc30$K$J$k$N$G!"H/\>I$7$J$/$J$j$^$9e(B (e$BK\<AE\*$K2r7h$9$k$o$1$G$Oe(B  
e$B$J$$$1$l$Ie(B )e$B!#e(B

## – Yusuke E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

[http://redmine.ruby-lang.org/issues/show/3136](http://redmine.ruby-lang.org/issues/show/3136)
