From: Christopher Hunt Date: Fri, 21 Feb 2020 09:33:04 +0000 (+0800) Subject: bpo-35727: Use exit code 0 on sys.exit() in multiprocessing.Process. (GH-11538) X-Git-Tag: v3.9.0a4~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c2ac4cf040ea950bf552d1e77bea613a1a5474fe;p=thirdparty%2FPython%2Fcpython.git bpo-35727: Use exit code 0 on sys.exit() in multiprocessing.Process. (GH-11538) --- diff --git a/Lib/multiprocessing/process.py b/Lib/multiprocessing/process.py index be13c079bb89..0b2e0b45b239 100644 --- a/Lib/multiprocessing/process.py +++ b/Lib/multiprocessing/process.py @@ -317,12 +317,12 @@ class BaseProcess(object): finally: util._exit_function() except SystemExit as e: - if not e.args: - exitcode = 1 - elif isinstance(e.args[0], int): - exitcode = e.args[0] + if e.code is None: + exitcode = 0 + elif isinstance(e.code, int): + exitcode = e.code else: - sys.stderr.write(str(e.args[0]) + '\n') + sys.stderr.write(str(e.code) + '\n') exitcode = 1 except: exitcode = 1 diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 4e48cd45e14c..73dc75d34a6f 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -864,12 +864,21 @@ class _TestSubclassingProcess(BaseTestCase): os.unlink(testfn) - for reason in (True, False, 8): - p = self.Process(target=sys.exit, args=(reason,)) - p.daemon = True - p.start() - join_process(p) - self.assertEqual(p.exitcode, reason) + cases = [ + ((True,), 1), + ((False,), 0), + ((8,), 8), + ((None,), 0), + ((), 0), + ] + + for args, expected in cases: + with self.subTest(args=args): + p = self.Process(target=sys.exit, args=args) + p.daemon = True + p.start() + join_process(p) + self.assertEqual(p.exitcode, expected) # # diff --git a/Misc/ACKS b/Misc/ACKS index 976c26eb9117..f329a2d4a7d3 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -746,6 +746,7 @@ Lawrence Hudson Michael Hudson Jim Hugunin Greg Humphreys +Chris Hunt Eric Huss Nehal Hussain Taihyun Hwang diff --git a/Misc/NEWS.d/next/Library/2019-01-12-20-39-34.bpo-35727.FWrbHn.rst b/Misc/NEWS.d/next/Library/2019-01-12-20-39-34.bpo-35727.FWrbHn.rst new file mode 100644 index 000000000000..9f3fa40e51bf --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-01-12-20-39-34.bpo-35727.FWrbHn.rst @@ -0,0 +1 @@ +Fix sys.exit() and sys.exit(None) exit code propagation when used in multiprocessing.Process. \ No newline at end of file