Project

General

Profile

Actions

Bug #19338

open

Ruby hangs when ouputting warnings inside ractor with VM lock held

Added by luke-gru (Luke Gruber) over 1 year ago. Updated about 1 year ago.

Status:
Assigned
Target version:
-
[ruby-core:111809]

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!

Actions #1

Updated by luke-gru (Luke Gruber) over 1 year 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) over 1 year ago

To simplify the problem, this hangs too:

MYCONSTANT = 1
Ractor.new do
  MYCONSTANT = 2
end.take
Actions #3

Updated by luke-gru (Luke Gruber) over 1 year 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) about 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to ko1 (Koichi Sasada)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0