From: ko1@... Date: 2020-12-01T17:36:20+00:00 Subject: [ruby-core:101184] [Ruby master Bug#17359] Ractor copy mode is not Ractor-safe Issue #17359 has been updated by ko1 (Koichi Sasada). marcandre (Marc-Andre Lafortune) wrote in #note-2: > The issue I'm pointing out is that one can register the new copy in the initial Ractor and use that reference later to mutate the object. I couldn't guess that the src ractor can accesses copied object with `initialize_copy`. ---------------------------------------- Bug #17359: Ractor copy mode is not Ractor-safe https://bugs.ruby-lang.org/issues/17359#change-88866 * Author: marcandre (Marc-Andre Lafortune) * Status: Open * Priority: Normal * Assignee: ko1 (Koichi Sasada) * ruby -v: ruby 3.0.0dev (2020-11-30T10:06:25Z master 89774a938a) [x86_64-darwin18] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- It should not be possible to mutate an object across Ractors, but the copy mode allows it currently: ```ruby class Foo attr_accessor :x def initialize_copy(*) $last = self super end end o = Foo.new o.x = 42 r = Ractor.new(o) do |copy| puts copy.x # => 42 Ractor.yield :sync Ractor.yield :sync puts copy.x # => 666 end r.take # => :sync $last.x = 666 r.take # => :sync r.take ``` Maybe the `copy` object should be marked as moved? -- https://bugs.ruby-lang.org/ Unsubscribe: