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 2008年05月08日 12:22 by jrosdahl, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| subprocess-fd-problem.py | jrosdahl, 2008年05月08日 12:22 | Code triggering the problem | ||
| Messages (4) | |||
|---|---|---|---|
| msg66415 - (view) | Author: Joel Rosdahl (jrosdahl) * | Date: 2008年05月08日 12:22 | |
The optimization in SVN rev 38556 seems to have changed Popen.communicate's behavior when stdout is subprocess.PIPE (and maybe for other cases as well). See the attached file. In Python 2.4.5, all three counts are the same. In Python 2.5.2, the middle count has increased by 1. In other words: A file descriptor is leaked until the last reference to the Popen instance is dropped. |
|||
| msg67068 - (view) | Author: Rafael Zanella (zanella) | Date: 2008年05月19日 18:08 | |
I don't know a lot about the matter at hand, that's why I'm not gonna append a patch. On "_communicate()" after a pipe is read it's closed, doing the same on "communicate()" seems to solve the issue of the extra pipe: """ if [self.stdin, self.stdout, self.stderr].count(None) >= 2: stdout = None stderr = None if self.stdin: if input: self.stdin.write(input) self.stdin.close() elif self.stdout: stdout = self.stdout.read() + self.stdout.close() elif self.stderr: stderr = self.stderr.read() + self.stderr.close() self.wait() return (stdout, stderr) """ Tested on "Python 2.6a2+ (trunk:62767M, May 19 2008, 13:11:07)". |
|||
| msg67391 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2008年05月26日 20:24 | |
Thanks zanella. Fixed in 2.6 trunk r63724. I created a unit test based on jrosdahl's example code. I will backport it to release25-maint after it has baked in trunk for a bit. |
|||
| msg67618 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2008年06月01日 23:45 | |
fixed in release25-maint r63881. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:34 | admin | set | github: 47040 |
| 2008年06月01日 23:45:30 | gregory.p.smith | set | status: open -> closed resolution: accepted messages: + msg67618 versions: + Python 2.5 |
| 2008年05月26日 20:24:30 | gregory.p.smith | set | priority: low messages: + msg67391 versions: - Python 2.5 |
| 2008年05月26日 19:57:05 | gregory.p.smith | set | keywords:
+ patch assignee: gregory.p.smith nosy: + gregory.p.smith versions: + Python 2.6 |
| 2008年05月19日 18:08:25 | zanella | set | nosy:
+ zanella messages: + msg67068 |
| 2008年05月08日 12:22:43 | jrosdahl | create | |