Issue #10892 has been updated by Benoit Daloze.


Could someone review the patch and apply it or find an alternative fix?

----------------------------------------
Bug #10892: Deadlock in autoload
https://bugs.ruby-lang.org/issues/10892#change-54430

* Author: Benoit Daloze
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0dev (2015-02-23 trunk 49693) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Updating to recent RubySpec seems to show a bug under concurrent autoload.
I attach the extracted logic to reproduce.

At me, the script ends with either, in most cases,

    autoload_bug.rb:105:in `value': No live threads left. Deadlock? (fatal)
    	from autoload_bug.rb:105:in `map'
    	from autoload_bug.rb:105:in `<main>'

Or:

    autoload_bug.rb:95:in `const_get': uninitialized constant Mod1 (NameError)
    	from autoload_bug.rb:95:in `block (3 levels) in <main>'
    	from autoload_bug.rb:86:in `each'
    	from autoload_bug.rb:86:in `block (2 levels) in <main>'

Which both seem incorrect behavior.
All versions from 2.0 seem affected, and 1.9.3 behavior seems wrong but differently.

Could someone confirm this is a bug?
Is it likely to be fixed?

---Files--------------------------------
autoload_bug.rb (2.18 KB)
0001-load.c-unlock-the-new-shield.patch (1005 Bytes)


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