require 'fiber'

class Fiber
  singleton_class.class_eval{ attr_accessor :finalized }
  def Fiber.finalize(id)
    self.finalized += 1  
  end
end
Fiber.finalized = 0

finalizer = Fiber.method(:finalize).to_proc

10.times do
fibers = 10_000.times.map do
  n = Fiber.new do
    f = Fiber.current
    Fiber.yield
  end
  ObjectSpace.define_finalizer(n, finalizer)
  n
end; nil

fibers.each(&:resume); nil
fibers.each(&:resume); nil
fibers = []

GC.start
puts
puts Fiber.finalized
puts `ps u #{Process.pid}`
end

