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 http://bugs.python.org/issue3210. 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)? TJG -- http://mail.python.org/mailman/listinfo/python-list
