Ruby hangs when ouputting warnings inside ractor with VM lock held
This code causes Ruby to hang:
rs =  2.times do rs << Ractor.new do MYCONSTANT = 2 end end rs.each(&:take)
There is a problem when the warning is being outputted with multiple ractors. A thread is calling RB_VM_LOCK() while holding the VM lock in ractor.c (ractor_check_blocking())
If the code is changed to RB_VM_LOCK_ENTER() and RB_VM_LOCK_LEAVE() then it fixes it, but I don't know if there's a better way.