From: Tadashi Saito Date: 2006-09-22T02:32:09+09:00 Subject: [ruby-dev:29596] Re: dumps core when 'def a; a.foo; end; a' こんばんは、斎藤です。 On Thu, 21 Sep 2006 07:47:58 +0900 Yukihiro Matsumoto wrote: > 実は、スタックレベルのチェックは毎回やると重過ぎるのでかなり > 間引いているのですが、このチェックの間にスタックを消費しすぎ > るとsegmentation faultになります。これはYARVにでもならない限 > り直せない(既知の)バグです。 なるほど、こちらは了解しました。 > これは謎ですが(本当にn=0x22なら再帰する前に落ちてるはず)、お > そらく最適化の影響ではないでしょうか。 はい、おっしゃるとおりでした。-O0にすると正常にエラーとなりました。 $ ruby-trunk -ve 'def a; a.foo; end; a' ruby 1.9.0 (2006-09-22) [i686-linux] -e:1:in `a': stack level too deep (SystemStackError) from -e:1:in `a' from -e:1 ちなみにコンパイラのバージョンはこんな感じでした。 $ gcc --version|head -1 gcc (GCC) 3.3.5 (Debian 1:3.3.5-13) ということで、「特定の環境だと既知のバグが出やすくなる」という だけですね。どうもお騒がせいたしました。 -- 斎藤ただし