Bug #19338 closed
Ruby hangs when ouputting warnings inside ractor with VM lock held
Added by luke-gru (Luke Gruber) over 2 years ago.
Updated 18 days ago.
Description
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.
Thanks!
Subject changed from Ruby hangs when defining new constant in ractor to Ruby hangs when ouputting warnings inside ractor
To simplify the problem, this hangs too:
MYCONSTANT = 1
Ractor . new do
MYCONSTANT = 2
end . take
Subject changed from Ruby hangs when ouputting warnings inside ractor to Ruby hangs when ouputting warnings inside ractor with VM lock held
Status changed from Open to Assigned
Assignee set to ko1 (Koichi Sasada)
Assignee changed from ko1 (Koichi Sasada) to ractor
Status changed from Assigned to Closed
I was able to reproduce this on 3.3, but not on 3.4 not master. So I'll assume it was fixed and close.
Also available in: Atom
PDF
Like 0
Like 0 Like 0 Like 0 Like 0 Like 0 Like 0