Descriptor leak in python 2.4 subprocess module

Tim Golden mail at
Thu Aug 28 11:37:48 CEST 2008

Michel Lespinasse wrote:
> Hi,
> I hit an issue with the following python code:
>     try:
>         get_orient = subprocess.Popen (['jpegexiforient', '-n', pathfull],
>                                        stdin = subprocess.PIPE,
>                                        stdout = subprocess.PIPE)
>         orient = get_orient.communicate ()[0]
>     except:
>         orient = None
> The intent of this was to read the exif orientation of a picture, or just
> use None if jpegexiforient can not run.
> The application worked fine on my devel machine but I noticed that on a
> different host, it crashed due to running out of file descriptors.
> After investigation I found out that the above code was responsible,
> leaking two file descriptors per invocation if jpegexiforient is not
> installed on the host.
> I don't see any way to fix it in my code either, since get_orient is not
> defined in the exception path, there is no way I can close its file
> descriptors myself. I believe this is a bug in the subprocess module,
> it should make sure to clean up after itself when getting out on the
> exception path.

This looks like a duplicate of
Can you confirm if this seems likely (and, if so, perhaps add
a note to the bug indicating that the problem is on Linux as well)?


More information about the Python-list mailing list