Actions
Bug #20907
closedFiber scheduler does not correctly re-lock mutex if `Mutex#sleep` is interrupted.
Description
The following test fails with a ThreadError
instead of a RuntimeError
:
def test_condition_variable
condition_variable = ::Thread::ConditionVariable.new
mutex = ::Thread::Mutex.new
error = nil
thread = Thread.new do
Thread.current.report_on_exception = false
scheduler = Scheduler.new
Fiber.set_scheduler scheduler
fiber = Fiber.schedule do
begin
mutex.synchronize do
condition_variable.wait(mutex)
end
rescue => error
end
end
fiber.raise(RuntimeError)
end
thread.join
assert_kind_of RuntimeError, error
end
Updated by nagachika (Tomoyuki Chikanaga) 22 days ago
- Backport changed from 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED to 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED
ruby_3_2 87249cbddb5dbac16cb7f0fa33958a42389759cb merged revision(s) a8c2d5e7bee5fad0965baeb58d312ddc5932ec26.
Actions
Like0
Like0Like0