[MacRuby-devel] [MacRuby] #408: leaked Tempfile don't get cleaned up (MacRuby)
Laurent Sansonetti
lsansonetti at apple.com
Thu Oct 29 12:29:43 PDT 2009
On Oct 29, 2009, at 12:18 PM, Matthias Neeracher wrote:
>> #408: leaked Tempfile don't get cleaned up
> [...]
>> Changes (by lsansonetti@?):
>>
>> * status: new => closed
>> * resolution: => fixed
>>
>> I implemented ObjectSpace finalizers as part of r2918 and now your
>> snippet
>> behaves like the old Ruby.
>
> This does indeed fix the main problem—the program running out of
> file descriptors. Thanks!
>
> The behavior still differs significantly from Ruby 1.8 behavior
> (though it may match 1.9 this regard): When running the program I
> included in the bug to completion, the ruby 1.8 version will clean
> up all temp files, while the MacRuby version will leave behind
> dozens of temp files (everything created after the last gc run).
> Presumably, one could force this cleanup by running gc at the end of
> the program, but I'm not sure this would be a popular thing to do in
> the runtime, and if it matters to a client, this can be done in
> client code.
I think this is a different bug, it looks like we don't force the call
of all finalizers before dying.
$ ./miniruby -e "o=Object.new; ObjectSpace.define_finalizer(o, proc{p
42}); p :dying"
:dying
$ ruby19 -e "o=Object.new; ObjectSpace.define_finalizer(o, proc{p
42}); p :dying"
:dying
42
I remember we trigger a full - synchronous collection before exiting
but apparently it doesn't help.
Could you file a new ticket on Trac for this?
Thanks,
Laurent
More information about the MacRuby-devel
mailing list