Project

General

Profile

Actions

Bug #702

closed

1+1+1+...+1 dumps core

Added by mame (Yusuke Endoh) almost 17 years ago. Updated over 14 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:37007]

Description

=begin
遠藤です。

以下で 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
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0