Actions
Bug #21037
openRactors hang with multiple threads
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.5.0dev (2025-01-14T20:59:39Z master f1e32914eb) +PRISM [x86_64-linux]
Description
The following program hangs, but I don't expect it to hang:
# frozen_string_literal: true
class Map
def initialize
@r = Ractor.new {
cache = { "int" => "integer", "bool" => "boolean" }
loop do
key = receive
Ractor.yield key
end
}
freeze
end
def fetch(key)
@r.send key
m = @r.take
raise unless key == m
m
end
end
tm = Map.new
t1 = Thread.new { 10.times { |i| p [i + 1,tm.fetch("int")] } }
t2 = Thread.new { 10.times { |i| p [i + 1, tm.fetch("bool")] } }
t1.join
t2.join
I'm not sure why this program hangs yet, but it does both on macOS and Linux. I've tested with master, Ruby 3.4, and Ruby 3.3. I'm not sure why it's hanging yet, but I wanted to file an issue.
Actions
Like0
Like0Like0