[ruby-core:122494] [Ruby Bug#21368] Moving objects with finalizer between Ractors crashes
From:
"zzak (zzak _) via ruby-core" <ruby-core@...>
Date:
2025-06-09 07:09:27 UTC
List:
ruby-core #122494
Issue #21368 has been updated by zzak (zzak _).
> Maybe simply marking objects with a finalizer ineligible for moving is more appropiate.
Thanks for checking, I've updated the PR to raise if the object has a finalizer. I'm not sure if we should do the check in like `make_shareable_check_shareable` instead, for example.
----------------------------------------
Bug #21368: Moving objects with finalizer between Ractors crashes
https://bugs.ruby-lang.org/issues/21368#change-113684
* Author: peterzhu2118 (Peter Zhu)
* Status: Assigned
* Assignee: ractor
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
When an object is moved to a different Ractor, the finalizers are not copied to the new object, so it will have the `FL_FINALIZE` flag set but no entry in the finalizer table.
The following script crashes:
```ruby
r = Ractor.new do
loop { Ractor.receive }
end
1_000.times do
o = Object.new
ObjectSpace.define_finalizer(o, proc { |id| })
r.send(o, move: true)
end
```
---Files--------------------------------
0001-Bug-21368-Transfer-finalizer-when-moving-between-Rac.patch (883 Bytes)
--
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/