Issue #4266 has been updated by Jon  Tara.


Brian Gugliemetti wrote:
> =begin
> This issue also applies to MonitorMixin (monitor.rb) as it uses the same lock/begin yield/ensure block.
> =end

There is a parameter conflict between the declaration and definition of rb_mon_synchronize. Compilation fails on at least OSX.


----------------------------------------
Bug #4266: Timeouts in threads cause "ThreadError: deadlock; recursive locking"
http://redmine.ruby-lang.org/issues/4266

Author: Christopher Bottaro
Status: Assigned
Priority: High
Assignee: Koichi Sasada
Category: core
Target version: 1.9.x
ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]


=begin
 Run the attached file (or this pastie http://pastie.org/1448542) a few times and you'll eventually get:
 
 ThreadError: deadlock; recursive locking:
 <internal:prelude>:8:in `lock'
 <internal:prelude>:8:in `synchronize'
 bin/deadlock_test.rb:86:in `block (4 levels) in <main>'
 /Users/cjbottaro/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/timeout.rb:57:in `timeout'
 bin/deadlock_test.rb:85:in `block (3 levels) in <main>'
 bin/deadlock_test.rb:83:in `times'
 bin/deadlock_test.rb:83:in `block (2 levels) in <main>'
 
 I've had the script run successfully over 5 times in a row before getting the errors, so if it doesn't happen the first few times... keep trying.
 
 The problem doesn't happen in 1.8.7 or Jruby, but does happen in 1.9.1.
=end



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