Issue #17676 has been updated by hsbt (Hiroshi SHIBATA).

Assignee set to ko1 (Koichi Sasada)
Status changed from Open to Assigned
Tags set to ractor

----------------------------------------
Bug #17676: Accessing ENV from Ractor raises IsolationError
https://bugs.ruby-lang.org/issues/17676#change-90805

* Author: delner (David Elner)
* Status: Assigned
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
## Background

Accessing ENV variables from a Ractor will raise Ractor::IsolationError, as the Hash is non-shareable.

## How to reproduce

``` ruby
ractor = Ractor.new do
 ENV['PATH']
end
 
ractor.take
```

## Expectation and result

Ractor raises Ractor::IsolationError for ENV

Expect to be able to access ENV variables from Ractors without raising an error.

```
`block in <main>': can not access non-shareable objects in constant Object::ENV by non-main Ractor. (Ractor::IsolationError)
```

## Additional Notes

Attempting to create a shareable copy of ENV currently fails:

```ruby
Ractor.make_shareable(ENV, copy: true)
# TypeError: cannot freeze ENV
# from <internal:ractor>:812:in `freeze'
```

## Suggested solutions

1. If ENV is a mutable hash, make a Ractor-compatible copy of ENV isolated to that Ractor.  




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>