Bug#619550: File::Temp CLEANUP + chdir gotcha still remains

Dominic Hargreaves dom at earth.li
Thu Apr 14 10:44:36 UTC 2011


tags 619550 + confirmed
thanks

On Thu, Mar 24, 2011 at 08:23:53PM -0400, Joey Hess wrote:
> Bug #479317 explains a gotcha with use of File::Temp::tempdir(CLEANUP => 1).
> If the code chdirs into the temp dir, which is a common thing to do,
> and then exits without chdiring out, which is not an uncommon thing,
> the cleanup code will fail to run.
> 
> The bug was closed because it was at least made not to crash the
> program. However, this gotcha still remains. A program that has
> combined these two common things will be subject to emitting strange
> error messages:
> 
> cannot remove path when cwd is /home/e-test/tmp/cQei_Q1aVi
> 
> .. and leaving behind temp dirs.
> 
> I now have at least 3 programs that work around this problem by
> 
> END {
> 	chdir("/)";
> }
> 
> It's very annoying to have to remember this bug and add this to my code
> every time I pull File::Temp into a program.

Hi Joey,

Thanks for taking the time to point out that this still isn't perfect.

I wonder whether it would be feasible to simply add the relevant
chdir("/") (or presumably the more OS-portable equivalents) into
File::Temp itself. Adding this at the start of the cleanup routine
of 0.22 seems to DTRT.

-- 
Dominic Hargreaves | http://www.larted.org.uk/~dom/
PGP key 5178E2A5 from the.earth.li (keyserver,web,email)






More information about the Perl-maintainers mailing list