Skip to content

Commit aadef2b

Browse files
authored
bpo-36102: Prepend slash to all POSIX shared memory block names (#12036)
1 parent 8377cd4 commit aadef2b

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Lib/multiprocessing/shared_memory.py

Lines changed: 10 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,11 @@ 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+
if self._name.startswith("/"):
206+
reported_name = self._name[1:]
207+
return reported_name
202208

203209
@property
204210
def size(self):
@@ -224,8 +230,8 @@ def unlink(self):
224230
In order to ensure proper cleanup of resources, unlink should be
225231
called once (and only once) across all processes which have access
226232
to the shared memory block."""
227-
if _USE_POSIX and self.name:
228-
_posixshmem.shm_unlink(self.name)
233+
if _USE_POSIX and self._name:
234+
_posixshmem.shm_unlink(self._name)
229235

230236

231237
_encoding = "utf8"

0 commit comments

Comments
 (0)