From b1dfcad6f0d3a52c9ac31fb9763fc7962a84b27c Mon Sep 17 00:00:00 2001 From: Pierre Glaser Date: Mon, 13 May 2019 21:15:32 +0200 Subject: bpo-36867: Create the resource_tracker before launching SharedMemoryManagers (GH-13276) --- Lib/multiprocessing/managers.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Lib/multiprocessing/managers.py') diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py index 2bad636855..514152298b 100644 --- a/Lib/multiprocessing/managers.py +++ b/Lib/multiprocessing/managers.py @@ -21,6 +21,7 @@ import signal import array import queue import time +import os from os import getpid from traceback import format_exc @@ -1349,6 +1350,14 @@ if HAS_SHMEM: _Server = SharedMemoryServer def __init__(self, *args, **kwargs): + if os.name == "posix": + # bpo-36867: Ensure the resource_tracker is running before + # launching the manager process, so that concurrent + # shared_memory manipulation both in the manager and in the + # current process does not create two resource_tracker + # processes. + from . import resource_tracker + resource_tracker.ensure_running() BaseManager.__init__(self, *args, **kwargs) util.debug(f"{self.__class__.__name__} created by pid {getpid()}") -- cgit v1.2.1