[ruby-core:122700] [Ruby Bug#21505] [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
From:
"jhawthorn (John Hawthorn) via ruby-core" <ruby-core@...>
Date:
2025-07-09 21:01:20 UTC
List:
ruby-core #122700
Issue #21505 has been updated by jhawthorn (John Hawthorn).
I opened https://github.com/ruby/ruby/pull/13838 which fixes this
```
./miniruby -e 'Ractor.new { exit }.join'
-e:1: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues.
-e:1:in 'Ractor#join': thrown by remote Ractor. (Ractor::RemoteError)
from -e:1:in '<main>'
-e:1:in 'Kernel#exit': exit (SystemExit)
from -e:1:in 'block in <main>'
```
In this PR we end up wrapping `SystemExit` in a `Ractor::RemoteError` rather than exiting the program. I don't know if that's the most desirable behaviour (versus translating back to SystemExit), but it makes sense to me as calling `exit` in a Ractor is a bit strange.
----------------------------------------
Bug #21505: [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
https://bugs.ruby-lang.org/issues/21505#change-113977
* Author: luke-gru (Luke Gruber)
* Status: Open
* Assignee: ractor
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
```ruby
r = Ractor.new do
exit
end
r.join # hangs
```
Should `exit` be allowed in ractors? It would be easiest to disallow, as the code might be tricky if we allow 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/