Actions
Bug #7530
closedConcurrent loads fail with mutex errors
Description
I have no idea what's going on here.
jruby-1.7.0 ~/projects/vts-jruby $ cat bench_load_path.rb
require 'benchmark'
FAKE_PATHS = ARGV[0].to_i || 100
THREADS = 8
ITERATIONS_PER_THREAD = 1000
FAKE_PATHS.times do |i|
$:.unshift "foo#{i}"
end
$: << '.'
system 'touch __load_path_bench_script__.rb'
puts Benchmark.measure {
@threads = THREADS.times.map do
Thread.new {
ITERATIONS_PER_THREAD.times do
require '__load_path_bench_script__'
$".pop
end
}
end
@threads.each { |t| t.join }
}
system 'rm __load_path_bench_script__.rb'
jruby-1.7.0 ~/projects/vts-jruby $ ruby-2.0.0 -rubygems bench_load_path.rb 100
/usr/local/lib/ruby/2.0.0/rubygems/custom_require.rb:36:in `require': wrong argument type false (expected mutex) (TypeError)
from /usr/local/lib/ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:17:in `block (3 levels) in <main>'
jruby-1.7.0 ~/projects/vts-jruby $ ruby-2.0.0 --disable-gems bench_load_path.rb 100
bench_load_path.rb:18:in `require': wrong argument type false (expected mutex) (TypeError)
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:17:in `block (3 levels) in <main>'
With verbose on, I get this error and a bunch of circular require warnings, even though I'm not doing any circular requires here.
ruby-2.0.0-preview2 ~/projects/vts-jruby $ ruby -v bench_load_path.rb
ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /Users/headius/projects/vts-jruby/__load_path_bench_script__.rb
from bench_load_path.rb:17:in `block (3 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
/Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require': Attempt to unlock a mutex which is locked by another thread (ThreadError)
from /Users/headius/.rvm/rubies/ruby-2.0.0-preview2/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'
from bench_load_path.rb:18:in `block (4 levels) in <main>'
from bench_load_path.rb:17:in `times'
from bench_load_path.rb:17:in `block (3 levels) in <main>'
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0