Re: [Rd] reg.finalizer and connection gc -- which runs when (and why)?

From: <luke-tierney_at_uiowa.edu>
Date: Fri, 22 Jul 2011 08:05:15 -0500

Connections use finalizers for cleanup. Once finalizers become eligible to run, the order in which they are run is unspecified. If you want to be sure yours runs first then you need to make sure the connection one doesn't become eligible to run until yours has.

Best,

luke

On Thu, 21 Jul 2011, Martin Morgan wrote:

> With this set-up
>
> options(warn = 1)
> tf <- tempfile()
> finalizer <- function(obj) {
> message("finalizer")
> close(obj$f)
> }
>
> this code works
>
> ev <- new.env()
> ev$f <- file(tf, "w")
> reg.finalizer(ev, finalizer)
> rm(ev)
> gc()
>
> whereas this (reversing the order of file() and reg.finalizer())
>
> ev <- new.env()
> reg.finalizer(ev, finalizer)
> ev$f <- file(tf, "w")
> rm(ev)
>
> produces
>
>> gc()
> Warning: closing unused connection 3 (/tmp/Rtmp9CWLtN/file6998ee7b)
> finalizer
> Error in close.connection(obj$f) : invalid connection
>
> In some respects, it seems like the user should get a chance to clean up
> their mess before the system does it for them, so the above seems like a bug.
> But maybe there is another way to understand this?
>
> Martin
>

-- 
Luke Tierney
Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:      luke_at_stat.uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Fri 22 Jul 2011 - 13:08:13 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 22 Jul 2011 - 15:30:11 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive