From: "jhawthorn (John Hawthorn) via ruby-core" Date: 2025-07-09T21:01:20+00:00 Subject: [ruby-core:122700] [Ruby Bug#21505] [Ractor] calling exit from non-main ractor will hang if main ractor waits on it 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 '
' -e:1:in 'Kernel#exit': exit (SystemExit) from -e:1:in 'block in
' ``` 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/