This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2012年09月09日 22:50 by christian.heimes, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| closeown.patch | christian.heimes, 2012年09月09日 22:50 | review | ||
| Messages (12) | |||
|---|---|---|---|
| msg170142 - (view) | Author: Christian Heimes (christian.heimes) * (Python committer) | Date: 2012年09月09日 22:50 | |
In Python/pythonrun.c PyRun_SimpleFileExFlags() may leak a FILE pointer if closeit is False and maybe_pyc_file returns true. This happens when the filename ends with ".pyc" or ".pyc". In this case the file is opened a second time with fopen() a few lines lower and assigned to the same variable "fp". However "fp" is never closed. The bug was found by Coverity as CID 719689. Georg: I've set the priority to release blocker as a resource leak of a file pointer and therefore rare file descriptor is IMHO a severe issue. |
|||
| msg170149 - (view) | Author: Jesús Cea Avión (jcea) * (Python committer) | Date: 2012年09月10日 02:24 | |
LGTM. Instead of using a flag variable, could you use something like "if (fp!=NULL) fclose(fp);"? |
|||
| msg170169 - (view) | Author: Christian Heimes (christian.heimes) * (Python committer) | Date: 2012年09月10日 09:31 | |
No, that's not possible. 'fp' is part of the argument to PyRun_SimpleFileExFlags() and never NULL. We need some way to distinguish a externally provided fp from a self-opened fp and fclose(fp) in the latter case. |
|||
| msg170208 - (view) | Author: Jesús Cea Avión (jcea) * (Python committer) | Date: 2012年09月10日 17:58 | |
Look good to me, then. Are you committing the patch yourself?. You can patch 2.7, 3.2 and default, and bug Georg for 3.3.0 inclusion (patches to default will be in 3.3.1), unless Georg is notified and chooses to cherry pick it. |
|||
| msg170296 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2012年09月11日 12:12 | |
New changeset 4754c4a710e6 by Christian Heimes in branch 'default': Issue #15895: Fix FILE pointer leak in PyRun_SimpleFileExFlags() when filename points to a pyc/pyo file and closeit is false. http://hg.python.org/cpython/rev/4754c4a710e6 |
|||
| msg170298 - (view) | Author: Christian Heimes (christian.heimes) * (Python committer) | Date: 2012年09月11日 12:15 | |
The bug was a 3.3 regression, possibly introduced with the merge of importlib. I forgot to tick the 3,3regression keyword. I've applied the fix. I'm leaving this ticket open and assigned to Georg for 3.3.0. |
|||
| msg170306 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2012年09月11日 13:47 | |
New changeset c3539eb02470 by Christian Heimes in branch 'default': Issue #15895: my analysis was slightly off. The FILE pointer is only leaked when set_main_loader() fails for a pyc file with closeit=0. In the success case run_pyc_file() does its own cleanup of the fp. I've changed the code to use another FILE ptr for pyc files and moved the fclose() to PyRun_SimpleFileExFlags() to make it more obvious what's happening. http://hg.python.org/cpython/rev/c3539eb02470 |
|||
| msg170331 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2012年09月11日 17:28 | |
New changeset 6fea947edead by Christian Heimes in branch 'default': Updates NEWS for issue #15895 http://hg.python.org/cpython/rev/6fea947edead |
|||
| msg170932 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2012年09月21日 21:52 | |
This issue is not a regression, I think that the fix can wait for Python 3.3.1. |
|||
| msg170933 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2012年09月21日 21:56 | |
> This issue is not a regression My bad, Crys explained me on IRC that the leak does not exist in Python 3.2, it was introduced by the importlib. So it is a regression. |
|||
| msg170958 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2012年09月22日 06:53 | |
Now transplanted to release clone. |
|||
| msg171094 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2012年09月24日 05:46 | |
New changeset fe4e6e0d6b0f by Christian Heimes in branch 'default': Issue #15895: Fix FILE pointer leak in PyRun_SimpleFileExFlags() when filename points to a pyc/pyo file and closeit is false. http://hg.python.org/cpython/rev/fe4e6e0d6b0f New changeset 9251fb0440a0 by Christian Heimes in branch 'default': Issue #15895: my analysis was slightly off. The FILE pointer is only leaked when set_main_loader() fails for a pyc file with closeit=0. In the success case run_pyc_file() does its own cleanup of the fp. I've changed the code to use another FILE ptr for pyc files and moved the fclose() to PyRun_SimpleFileExFlags() to make it more obvious what's happening. http://hg.python.org/cpython/rev/9251fb0440a0 New changeset 61b1c25d55f2 by Christian Heimes in branch 'default': Updates NEWS for issue #15895 http://hg.python.org/cpython/rev/61b1c25d55f2 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:35 | admin | set | nosy:
+ larry github: 60099 |
| 2012年09月24日 05:46:45 | python-dev | set | messages: + msg171094 |
| 2012年09月22日 06:53:35 | georg.brandl | set | status: open -> closed messages: + msg170958 |
| 2012年09月21日 21:56:10 | vstinner | set | messages: + msg170933 |
| 2012年09月21日 21:52:45 | vstinner | set | nosy:
+ vstinner messages: + msg170932 |
| 2012年09月11日 17:28:52 | python-dev | set | messages: + msg170331 |
| 2012年09月11日 13:47:38 | python-dev | set | messages: + msg170306 |
| 2012年09月11日 12:15:10 | christian.heimes | set | versions:
+ Python 3.3, Python 3.4 messages: + msg170298 keywords: + 3.3regression resolution: fixed stage: patch review -> resolved |
| 2012年09月11日 12:12:32 | python-dev | set | nosy:
+ python-dev messages: + msg170296 |
| 2012年09月10日 17:58:01 | jcea | set | messages: + msg170208 |
| 2012年09月10日 09:31:34 | christian.heimes | set | messages: + msg170169 |
| 2012年09月10日 02:24:49 | jcea | set | nosy:
+ jcea messages: + msg170149 |
| 2012年09月09日 22:50:50 | christian.heimes | create | |