Skip to content

Commit c2ac4cf

Browse files
authored
bpo-35727: Use exit code 0 on sys.exit() in multiprocessing.Process. (GH-11538)
1 parent baf29b2 commit c2ac4cf

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

Lib/multiprocessing/process.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,12 @@ def _bootstrap(self, parent_sentinel=None):
317317
finally:
318318
util._exit_function()
319319
except SystemExit as e:
320-
if not e.args:
321-
exitcode = 1
322-
elif isinstance(e.args[0], int):
323-
exitcode = e.args[0]
320+
if e.code is None:
321+
exitcode = 0
322+
elif isinstance(e.code, int):
323+
exitcode = e.code
324324
else:
325-
sys.stderr.write(str(e.args[0]) + '\n')
325+
sys.stderr.write(str(e.code) + '\n')
326326
exitcode = 1
327327
except:
328328
exitcode = 1

Lib/test/_test_multiprocessing.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -864,12 +864,21 @@ def test_sys_exit(self):
864864

865865
os.unlink(testfn)
866866

867-
for reason in (True, False, 8):
868-
p = self.Process(target=sys.exit, args=(reason,))
869-
p.daemon = True
870-
p.start()
871-
join_process(p)
872-
self.assertEqual(p.exitcode, reason)
867+
cases = [
868+
((True,), 1),
869+
((False,), 0),
870+
((8,), 8),
871+
((None,), 0),
872+
((), 0),
873+
]
874+
875+
for args, expected in cases:
876+
with self.subTest(args=args):
877+
p = self.Process(target=sys.exit, args=args)
878+
p.daemon = True
879+
p.start()
880+
join_process(p)
881+
self.assertEqual(p.exitcode, expected)
873882

874883
#
875884
#

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,7 @@ Lawrence Hudson
746746
Michael Hudson
747747
Jim Hugunin
748748
Greg Humphreys
749+
Chris Hunt
749750
Eric Huss
750751
Nehal Hussain
751752
Taihyun Hwang
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix sys.exit() and sys.exit(None) exit code propagation when used in multiprocessing.Process.

0 commit comments

Comments
 (0)