From: "Eregon (Benoit Daloze)" Date: 2022-11-05T11:00:50+00:00 Subject: [ruby-core:110620] [Ruby master Bug#17827] Monitor is not fiber safe Issue #17827 has been updated by Eregon (Benoit Daloze). Patch welcome :) ---------------------------------------- Bug #17827: Monitor is not fiber safe https://bugs.ruby-lang.org/issues/17827#change-99953 * Author: ioquatix (Samuel Williams) * Status: Closed * Priority: Normal * Assignee: Eregon (Benoit Daloze) * Backport: 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONE ---------------------------------------- According to our discussion here https://github.com/rspec/rspec-support/issues/501 it seems like typical implementation of per-thread reentrant mutex is no longer valid and can lead to some deadlock situation. ``` #!/usr/bin/env ruby require 'monitor' def monitor_failure m = Monitor.new f1 = Fiber.new do m.synchronize do puts "f1 A" Fiber.yield puts "f1 B" end end f2 = Fiber.new do m.synchronize do puts "f2 A" # Fiber.yield f1.resume puts "f2 B" end end f1.resume f2.resume end monitor_failure ``` -- https://bugs.ruby-lang.org/ Unsubscribe: