From tt.hogehoge+exerb @ gmail.com Tue May 1 22:42:21 2012 From: tt.hogehoge+exerb @ gmail.com (Takashi Torigoe) Date: Tue, 1 May 2012 22:42:21 +0900 Subject: [exerb-dev:0587] Re: =?iso-2022-jp?b?GyRCOkY1IkUqJVclbSUwJWklYCRHJE42L0ApPSobKEI=?= =?iso-2022-jp?b?GyRCTjsbKEI=?= In-Reply-To: References: Message-ID: 鳥越です。 返信が遅れてしまい申し訳ありません。 残念ながら、exerbのビルドを行う環境がなく(VC6が必要?) まだ試すことが出来ていませんが、 環境が整い次第試したいと思います。 情報ありがとうございました。 以上 2012年4月22日15:54 MURASE Masamitsu : > 村瀬と申します。 > いつもお世話になっています。 > > 以前に同じような現象に遭遇したときに調べた内容を共有させていただきます。 > > 原因は、本家の Ruby との以下の違いだと思います。 > 1. STACK_LEVEL_MAX 変数の初期化のされ方が異なる > 2. スタックサイズが異なる > > そのため、おそらく以下のような変更をすればよいと思います。 > > 1. STACK_LEVEL_MAX 変数の初期化: > 添付のパッチを適用し、ruby_init_stack 関数を呼んで STACK_LEVEL_MAX を > 初期化するようにします。 > (これは、本家の Ruby 1.8.7 では main.c の main 関数で RUBY_INIT_STACK マクロを > 呼んで行われていることですが、exerb では抜けているようです。) > > 2. スタックサイズ: > ruby18c などのリンカオプションで、スタックサイズを 0x2000000 (33554432) に > 設定し、本家 Ruby と同様に /STACK:0x2000000 を指定して、大きめのスタックを > 確保しておくようにします。 > > 1の変更をすれば、強制終了ではなく、SystemStackError で (適切に) 終了するようになりました。 > 2の変更も加えると、T1=697 程度であれば十分実行できるようになりました。 > > 以上、ご参考まで。 > -- > Mail: masamitsu.murase @ gmail.com > 村瀬 昌満 (MURASE Masamitsu)