[ruby-core:63873] [ruby-trunk - Bug #10076] 2nd thread can't get mutex even though 1st thread released it (race)

From: ledestin@...
Date: 2014-07-19 13:29:13 UTC
List: ruby-core #63873
Issue #10076 has been updated by Dmitry Maksyoma.

File monitor-test added

Attaching source code with reproduced problem.

----------------------------------------
Bug #10076: 2nd thread can't get mutex even though 1st thread released it (race)
https://bugs.ruby-lang.org/issues/10076#change-47897

* Author: Dmitry Maksyoma
* Status: Open
* Priority: Normal
* Assignee: 
* Category: lib
* Target version: 
* ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [i686-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
require 'thread'                                                                 
                                                                                 
m = Mutex.new                                                                    
                                                                                 
Thread.abort_on_exception = true                                                 
Thread.new {                                                                     
  loop {                                                                         
    m.synchronize {                                                              
      puts 'got mutex in thread'                                                 
      sleep 0.1                                                                  
    }                                                                            
  }                                                                              
}                                                                                
                                                                                 
loop {                                                                           
  m.synchronize {                                                                
    puts 'got mutex in loop'                                                     
    sleep 1                                                                      
  }                                                                              
  # Without sleep, the thread above has no chance of getting the mutex.          
  #sleep 0.1                                                                     
}

---Files--------------------------------
monitor-test (344 Bytes)


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

In This Thread

Prev Next