Forum: Ruby-core [ruby-trunk - Bug #7530][Open] Concurrent loads fail with mutex errors

Posted by Charles Nutter (headius)
on 2012-12-07 00:22
(Received via mailing list)
Issue #7530 has been reported by headius (Charles Nutter).

----------------------------------------
Bug #7530: Concurrent loads fail with mutex errors
https://bugs.ruby-lang.org/issues/7530

Author: headius (Charles Nutter)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]


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>'
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-12-22 18:06
(Received via mailing list)
Issue #7530 has been updated by kosaki (Motohiro KOSAKI).

Assignee changed from kosaki (Motohiro KOSAKI) to nobu (Nobuyoshi 
Nakada)

When removing $".pop likes following, this issue never happen.
So, I suspect this is require and threadshield issue.

-------------------------------
require 'benchmark'

FAKE_PATHS = ARGV[0].to_i || 100
THREADS = 2
ITERATIONS_PER_THREAD = 1000

FAKE_PATHS.times do |i|
  $:.unshift "foo#{i}"
end

$: << '.'

ITERATIONS_PER_THREAD.times {|i|
  system "touch __load_path_bench_script__#{i}.rb"
}

puts Benchmark.measure {
  @threads = THREADS.times.map do
    Thread.new {
      ITERATIONS_PER_THREAD.times do |i|
        require "__load_path_bench_script__#{i}"
      end
    }
  end
  @threads.each { |t| t.join }
}

ITERATIONS_PER_THREAD.times {|i|
  system "rm __load_path_bench_script__#{i}.rb"
}



----------------------------------------
Bug #7530: Concurrent loads fail with mutex errors
https://bugs.ruby-lang.org/issues/7530#change-35014

Author: headius (Charles Nutter)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]


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>'
Posted by Nobuyoshi Nakada (nobu)
on 2012-12-25 21:49
(Received via mailing list)
Issue #7530 has been updated by nobu (Nobuyoshi Nakada).

Priority changed from Normal to High


----------------------------------------
Bug #7530: Concurrent loads fail with mutex errors
https://bugs.ruby-lang.org/issues/7530#change-35075

Author: headius (Charles Nutter)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]


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>'
Posted by Glass_saga (Masaki Matsushita) (Guest)
on 2013-01-08 03:41
(Received via mailing list)
Issue #7530 has been updated by Glass_saga (Masaki Matsushita).


Here is the minimal code:

THREADS = 2
ITERATIONS_PER_THREAD = 1000

system 'touch __load_path_bench_script__.rb'
THREADS.times.map {
  Thread.new do
    ITERATIONS_PER_THREAD.times do
      require_relative '__load_path_bench_script__'
      $".pop
    end
  end
}.each(&:join)
system 'rm __load_path_bench_script__.rb'
----------------------------------------
Bug #7530: Concurrent loads fail with mutex errors
https://bugs.ruby-lang.org/issues/7530#change-35276

Author: headius (Charles Nutter)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]


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>'
Posted by Glass_saga (Masaki Matsushita) (Guest)
on 2013-01-08 08:09
(Received via mailing list)
Issue #7530 has been updated by Glass_saga (Masaki Matsushita).

Assignee changed from nobu (Nobuyoshi Nakada) to Glass_saga (Masaki 
Matsushita)


----------------------------------------
Bug #7530: Concurrent loads fail with mutex errors
https://bugs.ruby-lang.org/issues/7530#change-35279

Author: headius (Charles Nutter)
Status: Assigned
Priority: High
Assignee: Glass_saga (Masaki Matsushita)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2]


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>'
Posted by Daniela Robles (Guest)
on 2013-01-08 08:43
(Received via mailing list)
#unsubscribe

On Tue, Jan 8, 2013 at 2:09 AM, Glass_saga (Masaki Matsushita) <
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.