Issue28326
Created on 2016-10-01 11:45 by Valentin.Lorentz, last changed 2017-10-22 10:27 by pitrou. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| mp.patch | tiagoantao, 2016-10-02 04:38 | Patch with test case | review | |
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 1410 | closed | tiagoantao, 2017-05-03 02:29 | |
| PR 4073 | merged | pitrou, 2017-10-22 09:06 | |
| PR 4075 | merged | pitrou, 2017-10-22 09:46 | |
| Messages (8) | |||
|---|---|---|---|
| msg277807 - (view) | Author: ProgVal (Valentin.Lorentz) | Date: 2016-10-01 11:45 | |
Hello,
The following code:
import sys
import multiprocessing
sys.stdout.close()
def foo():
pass
p = multiprocessing.Process(target=foo)
p.start()
Crashes with:
Traceback (most recent call last):
File "foo.py", line 10, in <module>
p.start()
File "/usr/lib/python3.5/multiprocessing/process.py", line 105, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.5/multiprocessing/context.py", line 212, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.5/multiprocessing/context.py", line 267, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.5/multiprocessing/popen_fork.py", line 17, in __init__
sys.stdout.flush()
ValueError: I/O operation on closed file.
This bug has been reported to me on a daemonized program (written prior to PEP 3143).
|
|||
| msg277849 - (view) | Author: Tiago Antao (tiagoantao) * | Date: 2016-10-02 04:38 | |
I made a small patch for this. This is the first time I submit one, so please be careful with this... |
|||
| msg278271 - (view) | Author: Terry J. Reedy (terry.reedy) * | Date: 2016-10-07 21:37 | |
Patch looks plausible to me. The flush calls definitely need to be guarded. |
|||
| msg278273 - (view) | Author: Tiago Antao (tiagoantao) * | Date: 2016-10-07 21:51 | |
This is the first patch that I am submitting. More than willing to do any changes deemed necessary... |
|||
| msg304713 - (view) | Author: Antoine Pitrou (pitrou) * | Date: 2017-10-21 16:57 | |
In issue31804, we see that sys.stdout and sys.stderr can sometimes simply be None, so we must check for that too. |
|||
| msg304737 - (view) | Author: Antoine Pitrou (pitrou) * | Date: 2017-10-22 09:40 | |
New changeset daeefd2e049b74340307481112a39f77de0f4769 by Antoine Pitrou in branch 'master': bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed or None. (#4073) https://github.com/python/cpython/commit/daeefd2e049b74340307481112a39f77de0f4769 |
|||
| msg304740 - (view) | Author: Antoine Pitrou (pitrou) * | Date: 2017-10-22 10:27 | |
New changeset 34ef6da8f5fb03b83268bd35b77fb2183c748b70 by Antoine Pitrou in branch '3.6': [3.6] bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed or None. (GH-4073). (#4075) https://github.com/python/cpython/commit/34ef6da8f5fb03b83268bd35b77fb2183c748b70 |
|||
| msg304741 - (view) | Author: Antoine Pitrou (pitrou) * | Date: 2017-10-22 10:27 | |
This is now fixed in 3.6 and 3.7. Closing! |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2018-03-11 18:15:55 | pitrou | unlink | issue31804 superseder |
| 2017-10-22 10:27:53 | pitrou | set | status: open -> closed resolution: fixed messages: + msg304741 stage: patch review -> resolved |
| 2017-10-22 10:27:15 | pitrou | set | messages: + msg304740 |
| 2017-10-22 09:46:42 | pitrou | set | pull_requests: + pull_request4045 |
| 2017-10-22 09:40:33 | pitrou | set | messages: + msg304737 |
| 2017-10-22 09:06:46 | pitrou | set | pull_requests: + pull_request4043 |
| 2017-10-21 16:57:54 | pitrou | set | nosy:
+ pitrou messages:
+ msg304713 |
| 2017-10-20 20:39:55 | pitrou | link | issue31804 superseder |
| 2017-05-03 02:30:29 | tiagoantao | set | versions: + Python 3.6, Python 3.7 |
| 2017-05-03 02:29:16 | tiagoantao | set | pull_requests: + pull_request1515 |
| 2016-10-07 21:51:14 | tiagoantao | set | messages: + msg278273 |
| 2016-10-07 21:37:22 | terry.reedy | set | nosy:
+ terry.reedy messages: + msg278271 type: behavior |
| 2016-10-02 04:38:18 | tiagoantao | set | files:
+ mp.patch nosy:
+ tiagoantao keywords: + patch |
| 2016-10-01 22:47:48 | tacocat | set | nosy:
+ tacocat |
| 2016-10-01 17:28:22 | ned.deily | set | nosy:
+ davin |
| 2016-10-01 16:40:35 | Mariatta | set | nosy:
+ Mariatta |
| 2016-10-01 11:45:34 | Valentin.Lorentz | create | |