Actions
Bug #19105
closedmutex: Raise a ThreadError when detecting a fiber deadlock
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
Actions
Like0
Like0Like0Like0