[New-bugs-announce] [issue37477] NamedTemporaryFile can hang on windows

Erik Aronesty report at bugs.python.org
Mon Jul 1 16:35:15 EDT 2019


New submission from Erik Aronesty <erik at q32.com>:

Depending on the user's permissions, this code can hang, instead of raising an exception:

    from tempfile import NamedTemporaryFile
    NamedTemporaryFile(dir="/")

The problamatic code is in tempfile.py:

When encountering a "[Errno 13] Permission denied: '/tmpmcupmo_g'", the current code uses _os.access(dir, _os.W_OK) in two places to check if access is allowed to write to the directory.

On windows, _os.access does not check if the user has permission to write to the folder, it only checks if the folder is read-only (and it doesn't even do a good job at that).

So the temp file creator loops for a rather long time, and consumes a massive amount of system resources, because os.TMP_MAX on modern windows versions is 2147483647.

This article explains how to check if a directory can-write without trying to write to it:

http://blog.aaronballman.com/2011/08/how-to-check-access-rights/

Alternatively, a more careful check of the winerror return value from the open call *might* be sufficient.

----------
messages: 347073
nosy: earonesty
priority: normal
severity: normal
status: open
title: NamedTemporaryFile can hang on windows
versions: Python 3.6, Python 3.7

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue37477>
_______________________________________


More information about the New-bugs-announce mailing list