From: Yusuke ENDOH Date: 2008-11-01T00:07:42+09:00 Subject: [ruby-dev:37007] [Bug:1.9] 1+1+1+...+1 dumps core 遠藤です。 以下で SEGV します。 $ ./ruby -e 'eval("1+" * 100000 + "1")' セグメンテーション違反です iseq_compile_each の再帰でスタックオーバーフローするためです。 再帰数のチェックを入れれば例外にできると思いますが、こんな ケースのためにコンパイルを遅くするのはもったいない気もします。 どんなものでしょう。WontFix 行き? また、MVM 版だと SystemStackError として検知できるらしいです。 ちなみに、パーサの方でスタックオーバーフローする場合は例外に なります (bison に依存するかもしれませんが) 。 $ ./ruby -e 'eval("1+(" * 100000 + "1" + ")" * 100000)' -e:1:in `eval': (eval):1: memory exhausted (SyntaxError) ...+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1... ... ^ from -e:1:in `
' -- Yusuke ENDOH