Actions
Bug #21522
closedAccessing outer locals via eval in a Ractor returns false
Bug #21522:
Accessing outer locals via eval in a Ractor returns false
ruby -v:
ruby 3.5.0dev (2025-07-28T22:17:45Z master f1acf47ca2) +PRISM [arm64-darwin24]
Description
Normally, if you try to access a local that's been defined outside the scope of the Ractor block, it'll raise an ArgumentError. However, if you try to access the local via eval it will return the value false.
foo = Object.new
begin
Ractor.new {
p foo
}.value
rescue ArgumentError
end
Ractor.new {
p eval("foo") # => false
}.value
I'm not sure how we fix this, since my guess is that we zero the environment when copying, but I wanted to file the issue so we can track it.
Updated by andremuta (Andre Muta) 6 days ago
Hi, I submitted a PR to fix this: https://github.com/ruby/ruby/pull/14940
Updated by andremuta (Andre Muta) about 8 hours ago
- Status changed from Open to Closed
Applied in changeset git|244a37bd53fb5c7ba219ef958b6adaa2c4b0b67e.
Fixes [Bug #21522] eval isolation in Ractors for Prism
Actions