Henrik Bengtsson
2021-Jun-15 16:19 UTC
[Rd] R for Windows leaves detritus in the temp directory
ISSUE: The TMPDIR validation done in src/gnuwin32/system.c: /* in case getpid() is not unique -- has been seen under Windows */ snprintf(ifile, 1024, "%s/Rscript%x%x", tm, getpid(), (unsigned int) GetTickCount()); ifp = fopen(ifile, "w+b"); if(!ifp) R_Suicide(_("creation of tmpfile failed -- set TMPDIR suitably?")); } does _not_ clean up after itself, i.e. there's a missing unlink(ifile); In contrast, ditto in src/unix/system.c does this. BACKGROUND: When running R CMD check --as-cran on my 'future' package, I get: * checking for detritus in the temp directory ... NOTE Found the following files/directories: 'Rscript171866c62e' when checked on R Under development (unstable) (2021-06-13 r80496), including on win-builder. I can reproduce this with a package 'tests/detritus.R': cl <- parallel::makeCluster(1) dummy <- parallel::clusterEvalQ(cl, { cl <- parallel::makeCluster(1) on.exit(parallel::stopCluster(cl)) parallel::clusterEvalQ(cl, Sys.getpid()) }) print(dummy) parallel::stopCluster(cl) I believe it requires a nested PSOCK cluster to reproduce the 'R CMD check' NOTE, e.g. it does _not_ happen with: cl <- parallel::makeCluster(1) dummy <- parallel::clusterEvalQ(cl, { Sys.getpid() }) print(dummy) parallel::stopCluster(cl) /Henrik