📌
[Bug #19387] ObjectSpace.each_objectがRactorを開始した後だと共有可能オブジェクトのみ返すバグ報告
[Bug #19387] ObjectSpace.each_objects only returns shareable objects after starting a Ractor
-
ObjectSpace.each_object
がRactor
を開始したあとだと共有可能オブジェクトのみ返すというバグ報告
class X < Data.define(:name)
end
# 片方のオブジェクトを共有可能オブジェクトにしておく
x1 = X.new(name: "no shareable")
x2 = X.new(name: "shareable")
Ractor.make_shareable(x2)
# Ractor を開始する前は両方のオブジェクトが返ってくる
pp ObjectSpace.each_object(X).to_a
# => [#<data X name="shareable">, #<data X name="no shareable">]
r = Ractor.new do
receive
end
# Ractor を開始した後は make_shareable なオブジェクトのみ返す
pp ObjectSpace.each_object(X).to_a
# => [#<data X name="shareable">]
- これ自体2年以上前のチケットかつ同じようなチケットも立っているんですがまだ修正はされていないみたいですね
- チケットの中身をみると何回か対応されているのかと思ったら誤ったコミットと何回か紐付けてしまってたみたい
- 混乱を避けるためにこの挙動をドキュメント化した対応だけ入ってるみたいですね
Discussion