[ruby-core:93652] [Ruby master Bug#15992] An exception breaks monitor state and cause deadlock

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.issue-15992.20190710065540.e521034dddc8f8eb@ruby-lang.org>
Issue #15992 has been reported by naruse (Yui NARUSE).

----------------------------------------
Bug #15992: An exception breaks monitor state and cause deadlock
https://bugs.ruby-lang.org/issues/15992

* Author: naruse (Yui NARUSE)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.5: REQUIRED, 2.6: REQUIRED
----------------------------------------
lib/monitor.rb provides Monitor.
But its state handling is weak for interrupts caused by Thread.kill for example timeout libraries.

Timeout exception may happen everywhere. If it raised when the thread is executing

```ruby
  def mon_exit
    mon_check_owner
    @mon_count -=1
    if @mon_count == 0
      @mon_owner = nil
      # HERE!!!
      @mon_mutex.unlock
    end
  end
``` 

It breaks the state of the monitor and it causes deadlock.



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

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.