From: "KISHIMOTO, Makoto" Date: 2009-04-07T20:14:08+09:00 Subject: [ruby-dev:38287] Re: Hashのデフォルト値のブロックで無限ループするとcore > |trunkで以下のような、無限に再帰するスクリプトを実行すると、 > |SystemStackErrorにならずにcoreを吐きます。 > > 私の記憶が正しければ、無限ループを完全に検出するためにはかな > りの実行ペナルティをともなうため、現状はそこまで徹底していな > いと思います。 たとえば以下のような無限ループの場合、SystemStackErrorになるのですが、 これは無限ループを検出してそうしているのでしょうか? $ cat foo.rb def foo foo end foo $ ruby19 foo.rb foo.rb:2:in `foo': stack level too deep (SystemStackError) from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' ... 8717 levels... from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:2:in `foo' from foo.rb:5:in `
'