summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-01-27 09:53:35 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-01-27 09:53:35 (GMT)
commit2d843d25204af3a791f31b1b941675da49be82ed (patch)
tree8726d48e8a575217c26ea4a0a5ceaf19d9bd70b5 /Lib/multiprocessing
parente10ae8871a057d6afb5a4c5650e0ed029f13721d (diff)
parent84a0fbf6b0c2d196ae3995697acf596094b94eb8 (diff)
downloadcpython-2d843d25204af3a791f31b1b941675da49be82ed.zip
cpython-2d843d25204af3a791f31b1b941675da49be82ed.tar.gz
cpython-2d843d25204af3a791f31b1b941675da49be82ed.tar.bz2
Issue #13812: When a multiprocessing Process child raises an exception, flush stderr after printing the exception traceback.
Diffstat (limited to 'Lib/multiprocessing')
-rw-r--r--Lib/multiprocessing/forking.py2
-rw-r--r--Lib/multiprocessing/process.py7
2 files changed, 4 insertions, 5 deletions
diff --git a/Lib/multiprocessing/forking.py b/Lib/multiprocessing/forking.py
index 47746cb..b7de567 100644
--- a/Lib/multiprocessing/forking.py
+++ b/Lib/multiprocessing/forking.py
@@ -129,8 +129,6 @@ if sys.platform != 'win32':
import random
random.seed()
code = process_obj._bootstrap()
- sys.stdout.flush()
- sys.stderr.flush()
os._exit(code)
# `w` will be closed when the child exits, at which point `r`
diff --git a/Lib/multiprocessing/process.py b/Lib/multiprocessing/process.py
index 98ce0da..b599f11 100644
--- a/Lib/multiprocessing/process.py
+++ b/Lib/multiprocessing/process.py
@@ -291,16 +291,17 @@ class Process(object):
exitcode = e.args[0]
else:
sys.stderr.write(e.args[0] + '\n')
- sys.stderr.flush()
exitcode = 1
except:
exitcode = 1
import traceback
sys.stderr.write('Process %s:\n' % self.name)
- sys.stderr.flush()
traceback.print_exc()
+ finally:
+ util.info('process exiting with exitcode %d' % exitcode)
+ sys.stdout.flush()
+ sys.stderr.flush()
- util.info('process exiting with exitcode %d' % exitcode)
return exitcode
#