From: elkenny@... Date: 2018-05-25T16:09:04+00:00 Subject: [ruby-core:87259] [Ruby trunk Bug#14742] Deadlock when autoloading different constants in the same file from multiple threads Issue #14742 has been updated by eugeneius (Eugene Kenny). It looks like the fix was un-reverted in r63392. Thank you for working on this, Eric! ---------------------------------------- Bug #14742: Deadlock when autoloading different constants in the same file from multiple threads https://bugs.ruby-lang.org/issues/14742#change-72249 * Author: eugeneius (Eugene Kenny) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0dev (2018-05-08 trunk 63355) [x86_64-darwin17] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- The following example deadlocks consistently: ~~~ ruby # a.rb autoload :Foo, __dir__ + "/b" autoload :Bar, __dir__ + "/b" t1 = Thread.new { Foo } t2 = Thread.new { Bar } t1.join t2.join # b.rb module Foo; end module Bar; end ~~~ ~~~ $ ruby a.rb Traceback (most recent call last): 1: from a.rb:7:in `
' a.rb:7:in `join': No live threads left. Deadlock? (fatal) 3 threads, 3 sleeps current:0x00007ffa817ae680 main thread:0x00007ffa8140bf30 * # rb_thread_t:0x00007ffa8140bf30 native:0x00007fff9b3fa380 int:1 a.rb:7:in `join' a.rb:7:in `
' * # rb_thread_t:0x00007ffa817ace60 native:0x0000700007e7b000 int:0 mutex:0x00007ffa817ae680 cond:1 depended by: tb_thread_id:0x00007ffa8140bf30 /Users/eugene/.rbenv/versions/2.6.0-dev/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:59:in `require' /Users/eugene/.rbenv/versions/2.6.0-dev/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:59:in `require' a.rb:4:in `block in
' * # rb_thread_t:0x00007ffa817ae680 native:0x0000700007f7e000 int:0 /Users/eugene/src/autoload_thread_safety_test/b.rb:1:in `' /Users/eugene/.rbenv/versions/2.6.0-dev/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:59:in `require' /Users/eugene/.rbenv/versions/2.6.0-dev/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:59:in `require' a.rb:5:in `block in
' ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: