From: nobu@... Date: 2015-07-31T06:02:06+00:00 Subject: [ruby-core:70198] [Ruby trunk - Bug #7530] Concurrent loads fail with mutex errors Issue #7530 has been updated by Nobuyoshi Nakada. Description updated ---------------------------------------- Bug #7530: Concurrent loads fail with mutex errors https://bugs.ruby-lang.org/issues/7530#change-53624 * Author: Charles Nutter * Status: Closed * Priority: Normal * Assignee: Masaki Matsushita * ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin11.4.2] * Backport: ---------------------------------------- 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:17:in `block (3 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:17:in `block (3 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:18:in `block (4 levels) in
' 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
' from bench_load_path.rb:17:in `times' from bench_load_path.rb:17:in `block (3 levels) in
' -- https://bugs.ruby-lang.org/