From: kimuraw@... Date: 2015-12-20T12:11:42+00:00 Subject: [ruby-dev:49446] [Ruby trunk - Bug #11852] [Open] test_io.rb fails when maxproc < 1024 Issue #11852 has been reported by Wataru Kimura. ---------------------------------------- Bug #11852: test_io.rb fails when maxproc < 1024 https://bugs.ruby-lang.org/issues/11852 * Author: Wataru Kimura * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-12-20 trunk 53216) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: REQUIRED, 2.2: REQUIRED ---------------------------------------- maxprocのhard limitが小さい環境でtest_ioがErrorで失敗します。 OS X 10.11.2, OS X 10.10.5上のtrunk, 2.2.4, 2.1.8で確認しました。 ~~~ $ ./ruby -e 'p Process.getrlimit(Process::RLIMIT_NPROC)' [266, 532] $ limit -h maxproc maxproc 532 $ make TESTS=ruby/test_io.rb test-all : 1) Error: TestIO#test_close_on_exec: TypeError: no implicit conversion from nil to integer /Users/kimuraw/work/ruby_trunk/test/ruby/test_io.rb:1104:in `wait' /Users/kimuraw/work/ruby_trunk/test/ruby/test_io.rb:1104:in `ensure in ruby' /Users/kimuraw/work/ruby_trunk/test/ruby/test_io.rb:1103:in `ruby' /Users/kimuraw/work/ruby_trunk/test/ruby/test_io.rb:1661:in `test_close_on_exec' : ~~~ ~~~ test/ruby/test_io.rb 1093 def ruby(*args) 1094 args = ['-e', '$>.write($<.read)'] if args.empty? 1095 ruby = EnvUtil.rubybin 1096 opts = {} 1097 opts[:rlimit_nproc] = 1024 if defined?(Process::RLIMIT_NPROC) #<<< 1098 f = IO.popen([ruby] + args, 'r+', opts) ~~~ opts[:rlimit_nproc]に環境の最大値より大きな値を渡すとエラーになるようです。 問題の起きない環境でも`limit -h maxproc 1023`などすると再現します。 2.1.8のTestIO#test_dup_many()を参考に、環境の最大値と1024の小さいほうにするパッチを添付します。 ---Files-------------------------------- patch-test-ruby-test_io.rb.diff (593 Bytes) -- https://bugs.ruby-lang.org/