From: Yui NARUSE Date: 2011-06-26T17:28:27+09:00 Subject: [ruby-dev:43923] [Ruby 1.9 - Bug #4341][Closed] baserubyに1.8.xを指定すると make benchmark がエラー Issue #4341 has been updated by Yui NARUSE. Status changed from Assigned to Closed This seems resolved. ---------------------------------------- Bug #4341: baserubyに1.8.xを指定すると make benchmark がエラー http://redmine.ruby-lang.org/issues/4341 Author: Motohiro KOSAKI Status: Closed Priority: Normal Assignee: Koichi Sasada Category: Target version: ruby -v: ruby 1.9.3dev (2011-01-28 trunk 30708) [x86_64-linux] =begin trunkをビルドするとき、baserubyを指定する必要があるのですが、多くの人はruby-1.8.xを 指定していると思います(それが推奨と以前聞きました)。 しかしながら、make benchmarkがbaseruby指定時にbaserubyとビルドしたrubyとの性能比較モードで 動作するため以下のエラーが出ます。 ----------------------------------------------------------- benchmark results: name ruby 1.8.6 (2010-02-05) [x86_64-linux] ruby 1.9.3dev (2011-01-29 trunk 30718) [x86_64-linux] app_answer 1.176 0.227 app_erb 1.881 0.972 ./benchmark/driver.rb:208:in `measure': Benchmark process exited with abnormal status (256) (RuntimeError) from ./benchmark/driver.rb:192:in `measure_file' from ./benchmark/driver.rb:20:in `map' from ./benchmark/driver.rb:188:in `each' from ./benchmark/driver.rb:188:in `map' from ./benchmark/driver.rb:188:in `measure_file' from ./benchmark/driver.rb:187:in `map' from ./benchmark/driver.rb:187:in `measure_file' from ./benchmark/driver.rb:162:in `run' from ./benchmark/driver.rb:20:in `each_with_index' from ./benchmark/driver.rb:160:in `each' from ./benchmark/driver.rb:160:in `each_with_index' from ./benchmark/driver.rb:160:in `run' from ./benchmark/driver.rb:26:in `benchmark' from ./benchmark/driver.rb:249 make: *** [benchmark] Error 1 ----------------------------------------------------------- 「Benchmark process exited」と言われてもまったく分からんのですが、 エスパー能力により以下のスクリプトが stack level too deep で異常終了 するのが原因と分かりました。 benchmark/bm_app_factorial.rb ----------------------------------------------------------- def fact(n) if(n > 1) n * fact(n-1) else 1 end end 8.times{ fact(5000) } ----------------------------------------------------------- 1) benchmarkディレクトリに1.8.xで動作するスクリプトしか置かない 2) make benchmark のデフォルト動作を変え、baserubyは無視する の二案あるのですが (2) が現実的だと思います。 =end -- http://redmine.ruby-lang.org