From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2025-06-27T16:14:44+00:00 Subject: [ruby-core:122611] [Ruby Bug#21451] Ractor.make_shareable(->{}, copy: true) raises unhelpful error Issue #21451 has been updated by tenderlovemaking (Aaron Patterson). Eregon (Benoit Daloze) wrote in #note-3: > tenderlovemaking (Aaron Patterson) wrote in #note-2: > > I think we should just accept that `rb_obj_clone` can possibly raise an exception, and we should re-raise with a more helpful exception. > > I see, makes sense, agreed it's a good way. > I would suggest a different message and error class to improve clarity though: > ``` > -e:1:in 'Ractor.make_shareable': cannot copy # (Ractor::IsolationError) > ``` > => > ``` > -e:1:in 'Ractor.make_shareable': cannot make # shareable with copy (ArgumentError) > OR > -e:1:in 'Ractor.make_shareable': cannot make shareable with copy: # (ArgumentError) > ``` > > `Ractor::IsolationError` seems a bit strange, so I think simply `ArgumentError`, or maybe something like `Ractor::CopyError` would be better. I was also unsure if `IsolationError` made sense (I guess copying is a type of isolation? �����������������). I personally like more specific exception classes, so I'll introduce a `Ractor::CopyError` and change this to a feature. ---------------------------------------- Bug #21451: Ractor.make_shareable(->{}, copy: true) raises unhelpful error https://bugs.ruby-lang.org/issues/21451#change-113848 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Assignee: ractor * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- ``` > ruby -e'Ractor.make_shareable(->{}, copy:true)' :828:in 'Ractor.make_shareable': allocator undefined for Proc (TypeError) from -e:1:in '
' ``` This error isn't very helpful and I think we can improve it. The exception happens when we call `rb_obj_clone` on the lambda. I've made a patch to improve the error message so it's like this: ``` > ./miniruby -e'Ractor.make_shareable(->{}, copy:true)' -e:1:in 'Ractor.make_shareable': cannot copy # (Ractor::IsolationError) from -e:1:in '
' -e:1:in 'Ractor.make_shareable': allocator undefined for Proc (TypeError) from -e:1:in '
' ``` The patch is here: https://github.com/ruby/ruby/pull/13703 -- 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/