Skip to content

Commit 33f2aee

Browse files
committed
Fix issue36102: Prepend slash to all POSIX shared memory block names by default.
1 parent 234531b commit 33f2aee

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Lib/multiprocessing/shared_memory.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
# Shared memory block name prefix
3232
if _USE_POSIX:
33-
_SHM_NAME_PREFIX = 'psm_'
33+
_SHM_NAME_PREFIX = '/psm_'
3434
else:
3535
_SHM_NAME_PREFIX = 'wnsm_'
3636

@@ -68,6 +68,7 @@ class SharedMemory:
6868
_buf = None
6969
_flags = os.O_RDWR
7070
_mode = 0o600
71+
_prepend_leading_slash = True if _USE_POSIX else False
7172

7273
def __init__(self, name=None, create=False, size=0):
7374
if not size >= 0:
@@ -95,6 +96,7 @@ def __init__(self, name=None, create=False, size=0):
9596
self._name = name
9697
break
9798
else:
99+
name = "/" + name if self._prepend_leading_slash else name
98100
self._fd = _posixshmem.shm_open(
99101
name,
100102
self._flags,
@@ -198,7 +200,14 @@ def buf(self):
198200
@property
199201
def name(self):
200202
"Unique name that identifies the shared memory block."
201-
return self._name
203+
reported_name = self._name
204+
if _USE_POSIX and self._prepend_leading_slash:
205+
try:
206+
if self._name[0] == "/":
207+
reported_name = self._name[1:]
208+
except Exception:
209+
pass
210+
return reported_name
202211

203212
@property
204213
def size(self):
@@ -224,8 +233,8 @@ def unlink(self):
224233
In order to ensure proper cleanup of resources, unlink should be
225234
called once (and only once) across all processes which have access
226235
to the shared memory block."""
227-
if _USE_POSIX and self.name:
228-
_posixshmem.shm_unlink(self.name)
236+
if _USE_POSIX and self._name:
237+
_posixshmem.shm_unlink(self._name)
229238

230239

231240
_encoding = "utf8"

0 commit comments

Comments
 (0)