Ruby e$B$ONc30$,JaB*$5$l$J$$>l9g!"%9%?%C%/%H%l!<%9$rI=<($7$F$/e(B
e$B$l$^$9$,!"$=$N$H$-!"e(B… 6 levels… e$B$J$I$HESCf$r>JN,$7$F$/$le(B
e$B$^$9!#e(B
% ./ruby -e ‘def m(n) if n == 0 then raise else m(n-1) end end
m(16)’
-e:1:in raise': unhandled exception from -e:1:in
m’
from -e:1:in m' from -e:1:in
m’
from -e:1:in m' from -e:1:in
m’
from -e:1:in m' from -e:1:in
m’
from -e:1:in m' ... 6 levels... from -e:1:in
m’
from -e:1:in m' from -e:1:in
m’
from -e:2:in `’
e$B$3$l$O!“L58B:F5”$G%9%?%C%/%H%l!<%9$,$H$s$G$b$J$/D9$/$J$C$?>le(B
e$B9g$K$O$"$j$,$?$$$N$G$9$,!“I,MW$J>pJs$,1#$l$F$7$^$&$3$H$b$”$je(B
e$B$^$9!#e(B
e$B$=$N$?$a!“A4ItI=<($7$F$[$7$$$H$$$&MW5a$,=P$F$-$F!”$A$g$C$HD4e(B
e$B$Y$?$@$1$G$be(B
[ruby-talk:56054], [ruby-talk:75008], [ruby-list:38810],
[ruby-talk:86343],
[ruby-talk:115962], [ruby-talk:159209], [ruby-core:6572],
[ruby-talk:187642]
e$B$GLdBjDs5/$,$J$5$l$F$$$^$9!#e(B
e$B$G!";W$C$?$N$G$9$,!"H/@8$7$?Nc30$,e(B SystemStackError e$B$G$J$$$He(B
e$B$-$OA4It=P$9$N$O$I$&$G$7$g$&$+!#e(B
Index: eval_error.h
— eval_error.h (e$B%j%S%8%g%se(B 12561)
+++ eval_error.h (e$B:n6H%3%T!<e(B)
@@ -155,6 +155,7 @@
long i;
long len = RARRAY_LEN(errat);
VALUE *ptr = RARRAY_PTR(errat);
-
int truncate = eclass == rb_eSysStackError;
#define TRACE_MAX (TRACE_HEAD+TRACE_TAIL+5)
#define TRACE_HEAD 8
@@ -164,7 +165,7 @@
if (TYPE(ptr[i]) == T_STRING) {
warn_printf("\tfrom %s\n", RSTRING_PTR(ptr[i]));
}
-
if (i == TRACE_HEAD && len > TRACE_MAX) {
-
warn_printf("\t … %ld levels…\n",if (truncate && i == TRACE_HEAD && len > TRACE_MAX) {
len - TRACE_HEAD - TRACE_TAIL);
i = len - TRACE_TAIL;