diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2012-01-27 09:52:37 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2012-01-27 09:52:37 (GMT) |
commit | 84a0fbf6b0c2d196ae3995697acf596094b94eb8 (patch) | |
tree | 78d5290cbf1e11903a6abfe6947922a9dbb661f6 /Lib/multiprocessing | |
parent | 9f6b02ecdedbd033be3e77960aa3abf314fa9db7 (diff) | |
download | cpython-84a0fbf6b0c2d196ae3995697acf596094b94eb8.zip cpython-84a0fbf6b0c2d196ae3995697acf596094b94eb8.tar.gz cpython-84a0fbf6b0c2d196ae3995697acf596094b94eb8.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.py | 2 | ||||
-rw-r--r-- | Lib/multiprocessing/process.py | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/Lib/multiprocessing/forking.py b/Lib/multiprocessing/forking.py index cc7c326..4e24d6a 100644 --- a/Lib/multiprocessing/forking.py +++ b/Lib/multiprocessing/forking.py @@ -124,8 +124,6 @@ if sys.platform != 'win32': import random random.seed() code = process_obj._bootstrap() - sys.stdout.flush() - sys.stderr.flush() os._exit(code) def poll(self, flag=os.WNOHANG): diff --git a/Lib/multiprocessing/process.py b/Lib/multiprocessing/process.py index 5987af9..2b61ee9 100644 --- a/Lib/multiprocessing/process.py +++ b/Lib/multiprocessing/process.py @@ -275,16 +275,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 # |