Issue #5980 has been updated by mame (Yusuke Endoh).

Status changed from Open to Feedback

Someone has to volunteer to write a patch.

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #5980: Trying to Load File When Too Many Files Open Should Raise Something Other Than Plain LoadError
https://bugs.ruby-lang.org/issues/5980#change-25386

Author: rue (Eero Saynatkari)
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 


Currently encountering too many open file handles when trying to load/require a file simply raises a LoadError. It's not easy to determine that the root cause is exhaustion (see below for demonstration).

The error should be changed either to an actual EMFILE, a wrapper error, or at least alter the LoadError message to indicate the actual cause.


$ echo "p 1" > /tmp/test.rb

$ ruby -e 'fs = []; 250.times {|i| fs << File.open("/tmp/tst#{i}", "w") }; require "/tmp/test.rb"'
1


$ ruby -e 'fs = []; 252.times {|i| fs << File.open("/tmp/tst#{i}", "w") }'
-e:1:in `initialize': Too many open files - /tmp/tst251 (Errno::EMFILE)
	from -e:1:in `open'
	from -e:1:in `block in <main>'
	from -e:1:in `times'
	from -e:1:in `<main>'

$ ruby -e 'fs = []; 251.times {|i| fs << File.open("/tmp/tst#{i}", "w") }; require "/tmp/test.rb"'
/Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems.rb:203:in `try_activate': cannot load such file -- rubygems/specification (LoadError)
	from /Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:58:in `rescue in require'
	from /Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:35:in `require'
	from -e:1:in `<main>'

$ ruby -v
ruby 2.0.0dev (2012-02-07 trunk 34462) [x86_64-darwin11.3.0]


-- 
http://bugs.ruby-lang.org/