cpython: 5456b699788f (original) (raw)

Mercurial > cpython

changeset 105576:5456b699788f

Issue #28779: multiprocessing.set_forkserver_preload() would crash the forkserver process if a preloaded module instantiated some multiprocessing objects such as locks. [#28779]

Antoine Pitrou solipsis@pitrou.net
date Sat, 10 Dec 2016 17:19:21 +0100
parents ff82dfd558df(current diff)f3b9fd41b5cb(diff)
children 40e8b39199da
files Misc/NEWS
diffstat 5 files changed, 37 insertions(+), 2 deletions(-)[+] [-] Lib/multiprocessing/context.py 2 Lib/multiprocessing/spawn.py 2 Lib/test/_test_multiprocessing.py 13 Lib/test/mp_preload.py 18 Misc/NEWS 4

line wrap: on

line diff

--- a/Lib/multiprocessing/context.py +++ b/Lib/multiprocessing/context.py @@ -196,7 +196,7 @@ class BaseContext(object): def get_start_method(self, allow_none=False): return self._name

@property

--- a/Lib/multiprocessing/spawn.py +++ b/Lib/multiprocessing/spawn.py @@ -217,7 +217,7 @@ def prepare(data): process.ORIGINAL_DIR = data['orig_dir'] if 'start_method' in data:

if 'init_main_from_name' in data: _fixup_main_from_name(data['init_main_from_name'])

--- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -3818,6 +3818,19 @@ class TestStartMethod(unittest.TestCase) self.assertTrue(methods == ['fork', 'spawn'] or methods == ['fork', 'spawn', 'forkserver'])

+ + #

Check that killing process does not leak named semaphores

#

new file mode 100644 --- /dev/null +++ b/Lib/test/mp_preload.py @@ -0,0 +1,18 @@ +import multiprocessing + +multiprocessing.Lock() + + +def f():

+ + +if name == "main":

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -171,6 +171,10 @@ Core and Builtins Library ------- +- Issue #28779: multiprocessing.set_forkserver_preload() would crash the