[ruby-core:121446] [Ruby Bug#19765] Ractor.make_shareable ignores self of a proc created from a Method
From:
"jhawthorn (John Hawthorn) via ruby-core" <ruby-core@...>
Date:
2025-03-27 00:45:15 UTC
List:
ruby-core #121446
Issue #19765 has been updated by jhawthorn (John Hawthorn).
Status changed from Assigned to Closed
Assignee changed from ko1 (Koichi Sasada) to ractor
Target version set to 3.5
This should be fixed by commit:git|d80f3a287c5c8d0404b6cb837db360cab320cde1
The third example now also raises `can not make shareable object for #<Method: String#to_s()>`
----------------------------------------
Bug #19765: Ractor.make_shareable ignores self of a proc created from a Method
https://bugs.ruby-lang.org/issues/19765#change-112434
* Author: Ethan (Ethan -)
* Status: Closed
* Assignee: ractor
* Target version: 3.5
* ruby -v: ruby 3.3.0dev (2023-07-12T00:26:03Z master dfe782be17) [x86_64-darwin21]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
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:
```ruby
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
# => "!"
```
Related, maybe:
#19372
#19374
Tangential: why does Proc cause Ractor::IsolationError but Method causes Ractor::Error?
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/