Actions
Bug #19338
openRuby hangs when ouputting warnings inside ractor with VM lock held
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!
Updated by luke-gru (Luke Gruber) almost 2 years ago
- Subject changed from Ruby hangs when defining new constant in ractor to Ruby hangs when ouputting warnings inside ractor
Updated by luke-gru (Luke Gruber) almost 2 years ago
To simplify the problem, this hangs too:
MYCONSTANT = 1
Ractor.new do
MYCONSTANT = 2
end.take
Updated by luke-gru (Luke Gruber) almost 2 years ago
- Subject changed from Ruby hangs when ouputting warnings inside ractor to Ruby hangs when ouputting warnings inside ractor with VM lock held
Updated by hsbt (Hiroshi SHIBATA) almost 2 years ago
- Status changed from Open to Assigned
- Assignee set to ko1 (Koichi Sasada)
Actions
Like0
Like0Like0Like0Like0