Bug #21401
closedObjectSpace can't count Fibers after using a Ractor
Description
Hi, thanks for all your great work, Ruby crew!
I have a test in my project that uses ObjectSpace.each_object(Fiber).count
to see how many Fibers have been started by my code. This test started failing when I added other tests using Ractor
s. I was able to isolate it with this script:
require "objspace"
f = Fiber.new { 1 + 1 }
GC.start
p ObjectSpace.each_object(Fiber).count
# => 2
Ractor.new { 1 + 1 }.take
p ObjectSpace.each_object(Fiber).count
# => 0 (should be 2)
# The fiber _is_ there!
p f
# #<Fiber:0x0000000100c568a8 ractor_fibers.rb:4 (created)>
It seems like ObjectSpace
can't count fibers for some reason, but I expect it to return the number of Fibers in memory. Other classes like Hash
and String
are not affected.
It fails on Ruby 3.4.1 and 3.5-dev. I used:
ruby 3.5.0dev (2025-06-09T14:38:29Z master f9966b9b76) +PRISM [x86_64-darwin22]
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-darwin22]
Please let me know if I can help with anything else in tracking down this bug. Thanks again!
Updated by jhawthorn (John Hawthorn) about 14 hours ago
- Is duplicate of Bug #19387: ObjectSpace.each_objects only returns shareable objects after starting a Ractor added
Updated by jhawthorn (John Hawthorn) about 14 hours ago
- Status changed from Open to Rejected
👋 Hi Robert! This is a known issue. Once a Ractor is started each_objects
will only return shareable objects. I expect ko1's Ractor-local GC may change this. Closing as rejected in favour of #19387.