Skip to content

Commit 43dc35d

Browse files
committed
bpo-35727: Use exit code 0 on sys.exit() in multiprocessing.Process.
1 parent bf16991 commit 43dc35d

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

Lib/multiprocessing/process.py

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

Lib/test/_test_multiprocessing.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,13 @@ def test_sys_exit(self):
855855
join_process(p)
856856
self.assertEqual(p.exitcode, reason)
857857

858+
for args in ((None,), (),):
859+
p = self.Process(target=sys.exit, args=args)
860+
p.daemon = True
861+
p.start()
862+
join_process(p)
863+
self.assertEqual(p.exitcode, 0)
864+
858865
#
859866
#
860867
#

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,7 @@ Lawrence Hudson
735735
Michael Hudson
736736
Jim Hugunin
737737
Greg Humphreys
738+
Chris Hunt
738739
Eric Huss
739740
Nehal Hussain
740741
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)