[ruby-core:123540] [Ruby Bug#21522] Accessing outer locals via eval in a Ractor returns false
From:
"andremuta (Andre Muta) via ruby-core" <ruby-core@...>
Date:
2025-10-24 19:38:57 UTC
List:
ruby-core #123540
Issue #21522 has been updated by andremuta (Andre Muta).
Hi, I submitted a PR to fix this: https://github.com/ruby/ruby/pull/14940
----------------------------------------
Bug #21522: Accessing outer locals via eval in a Ractor returns false
https://bugs.ruby-lang.org/issues/21522#change-114918
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Assignee: ractor
* ruby -v: ruby 3.5.0dev (2025-07-28T22:17:45Z master f1acf47ca2) +PRISM [arm64-darwin24]
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
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`.
```ruby
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.
--
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/