# \[ruby-bugs-12398\] Redefining Exception#backtrace and unhandl

**URL:** <https://www.ruby-forum.com/t/ruby-bugs-12398-redefining-exception-backtrace-and-unhandl/109815>\
**Category:** Development\
**Created:** [July 19, 2007, 9:11am UTC](https://www.ruby-forum.com/t/ruby-bugs-12398-redefining-exception-backtrace-and-unhandl/109815 "2007-07-19T09:11:46Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [July 19, 2007, 9:11am UTC](https://www.ruby-forum.com/t/ruby-bugs-12398-redefining-exception-backtrace-and-unhandl/109815/1 "2007-07-19T09:11:46Z")

</div>

e$B$J$+$@$G$9!#e(B

[http://rubyforge.org/tracker/index.php?func=detail&aid=12398&group\_id=426&atid=1698](http://rubyforge.org/tracker/index.php?func=detail&aid=12398&group_id=426&atid=1698)  
e$B$N7o!“e(Bbacktracee$B$r%;%C%H$9$k$H$-$K$O%A%'%C%/$7$F$$$k$1$l$I!”\<h$je(B  
e$B=P$9$H$-$K$O3NG’$7$F$J$$$+$i$G$9$,!"$I$C$A$,$$$$$G$7$g$&!#e(B

(1) e$B\<h$j=P$7$?8e$G%A%'%C%/$9$ke(B  
(2) rb\_funcalle$B$r;H$o$:e(Bexc\_backtrace()e$B$GD\>@\<h$j=P$9e(B

e$BMW$9$k$K!“e(BException#backtracee$B$r%5%V%/%i%9$G%\*!\<%P!\<%i%$%I$9$k$3e(B  
e$B$H$rA[Dj$9$k$+$I$&$+!”$G$9$,!#e(B

e$B$H$j$"$($:e(B(1)e$B$N%Q%C%A$G$9!#e(B

# Index: error.c

— error.c (revision 12814)  
+++ error.c (working copy)  
@@ -496,12 +496,12 @@ static VALUE  
exc\_backtrace(VALUE exc)  
{

- ID bt = rb\_intern(“bt”);

- static ID bt;

- if (!rb\_ivar\_defined(exc, bt)) return Qnil;
- return rb\_ivar\_get(exc, bt);

- if (!bt) bt = rb\_intern(“bt”);
- return rb\_attr\_get(exc, bt);  
}

-static VALUE  
-check\_backtrace(VALUE bt)  
+VALUE  
+rb\_check\_backtrace(VALUE bt)  
{  
long i;  
@@ -537,5 +537,5 @@ static VALUE  
exc\_set\_backtrace(VALUE exc, VALUE bt)  
{

- return rb\_iv\_set(exc, “bt”, check\_backtrace(bt));

- return rb\_iv\_set(exc, “bt”, rb\_check\_backtrace(bt));  
}

# Index: eval\_error.ci

— eval\_error.ci (revision 12814)  
+++ eval\_error.ci (working copy)  
@@ -67,4 +67,6 @@ error\_pos(void)  
}

+VALUE rb\_check\_backtrace(VALUE);  
+  
static VALUE  
get\_backtrace(VALUE info)  
@@ -75,5 +77,5 @@ get\_backtrace(VALUE info)  
if (NIL\_P(info))  
return Qnil;

- return rb\_check\_array\_type(info);

- return rb\_check\_backtrace(info);  
}

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [July 19, 2007, 10:20am UTC](https://www.ruby-forum.com/t/ruby-bugs-12398-redefining-exception-backtrace-and-unhandl/109815/2 "2007-07-19T10:20:54Z")

</div>

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

In message “Re: [ruby-dev:31261] [ruby-bugs-12398] Redefining  
Exception#backtrace and unhandled exception bug”  
on Thu, 19 Jul 2007 16:10:43 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|(1) e$B\<h$j=P$7$?8e$G%A%'%C%/$9$ke(B  
|(2) rb\_funcalle$B$r;H$o$:e(Bexc\_backtrace()e$B$GD\>@\<h$j=P$9e(B  
|  
|e$BMW$9$k$K!“e(BException#backtracee$B$r%5%V%/%i%9$G%\*!\<%P!\<%i%$%I$9$k$3e(B  
|e$B$H$rA[Dj$9$k$+$I$&$+!”$G$9$,!#e(B

(1)e$B$NJ}$,NI$$$G$7$g$&$M!#%3%\_%C%H$7$F$/$@$5$$$^$;$s$+!#e(B
