Issue #6634 has been updated by kosaki (Motohiro KOSAKI).


Hi mame-san,

ko1 found the second case (i.e. below) is a his regression since October. He told me he plan to fix soon.

>    $ ruby -e 'loop { system("./ruby lol2.rb > t") || break }'
>    <internal:prelude>:8:in `lock': deadlock; recursive locking (ThreadError)
>            from <internal:prelude>:8:in `synchronize'
>            from /home/mame/work/local/lib/ruby/2.0.0/thread.rb:69:in `wait'


And I couldn't reproduce this issue at commit r37074 (Oct 3). So I think we haven't reproduce an original issue yet.


----------------------------------------
Bug #6634: Deadlock with join and ConditionVariable
https://bugs.ruby-lang.org/issues/6634#change-32531

Author: meh. (meh. I don't care)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


I'm getting a fatal deadlock in one of my gems, it's a simple threadpool implementation.

The library works both in Rubinius and JRuby, so I guess it's a bug.

The gem is here: https://github.com/meh/ruby-threadpool

The example that crashes is attached.

Basically it raises a fatal deadlock if you join a thread and then call ConditionVariable#wait, I'm not 100% sure if the bug is in the ConditionVariable or what, all I know is that it happens in that situation and that it works on Rubinius and JRuby.


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