Project

General

Profile

Actions

Bug #19105

closed

mutex: Raise a ThreadError when detecting a fiber deadlock

Added by byroot (Jean Boussier) over 1 year ago. Updated over 1 year ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:110626]

Description

The following code can lead to a deadlock but not raise any error:

mutex = Mutex.new
mutex.synchronize do
  error = assert_raise ThreadError do
    Fiber.new do
      mutex.lock
    end.resume
  end
end

If no fiber scheduler is registered, and both the fiber that currently own the lock and the one trying to acquire it belongs to the same thread, then this deadlock situation cannot possibly resolve (aside from a signal interrupt maybe).

Discussed in https://bugs.ruby-lang.org/issues/17827#note-10
Pull request: https://github.com/ruby/ruby/pull/6680


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #17827: Monitor is not fiber safeClosedEregon (Benoit Daloze)Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0