Actions
Bug #19765
openRactor.make_shareable ignores self of a proc created from a Method
Description
An unshareable receiver of a Proc or a Method will cause make_shareable to error, but this does not happen with a proc from Method#to_proc:
str = ""
a = str.instance_exec { proc { to_s } }
Ractor.make_shareable a
# => <internal:ractor>:820:in `make_shareable': Proc's self is not shareable: #<Proc:0x00000001064b62c8 (irb):1> (Ractor::IsolationError)
b = str.instance_exec { method(:to_s) }
Ractor.make_shareable b
# => <internal:ractor>:820:in `make_shareable': can not make shareable object for #<Method: String#to_s()> (Ractor::Error)
c = str.instance_exec { method(:to_s).to_proc }
Ractor.make_shareable c
c.call
# => ""
str[0] = "!"
c.call
# => "!"
Tangential: why does Proc cause Ractor::IsolationError but Method causes Ractor::Error?
Actions
Like0
Like0Like0