Issue #10892 has been updated by eugeneius (Eugene Kenny).


The simpler repro script runs successfully from 2.3.0 onwards, and `git bisect` between 2.2.0 and 2.3.0 shows that r59221 (from #11384) fixed it.

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

* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* 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/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>