Skip to content

Commit 38e3287

Browse files
bpo-41344: Raise ValueError when creating shared memory of size 0 (pythonGH-21556) (pythonGH-22019)
(cherry picked from commit 475a5fb) Co-authored-by: Vinay Sharma <vinay04sharma@icloud.com> Co-authored-by: Vinay Sharma <vinay04sharma@icloud.com>
1 parent 85ca9c0 commit 38e3287

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

Lib/multiprocessing/shared_memory.py

+2
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def __init__(self, name=None, create=False, size=0):
7575
raise ValueError("'size' must be a positive integer")
7676
if create:
7777
self._flags = _O_CREX | os.O_RDWR
78+
if size == 0:
79+
raise ValueError("'size' must be a positive number different from zero")
7880
if name is None and not self._flags & os.O_EXCL:
7981
raise ValueError("'name' can only be None if create=True")
8082

Lib/test/_test_multiprocessing.py

+12
Original file line numberDiff line numberDiff line change
@@ -3827,6 +3827,18 @@ class OptionalAttachSharedMemory(shared_memory.SharedMemory):
38273827

38283828
sms.close()
38293829

3830+
# Test creating a shared memory segment with negative size
3831+
with self.assertRaises(ValueError):
3832+
sms_invalid = shared_memory.SharedMemory(create=True, size=-1)
3833+
3834+
# Test creating a shared memory segment with size 0
3835+
with self.assertRaises(ValueError):
3836+
sms_invalid = shared_memory.SharedMemory(create=True, size=0)
3837+
3838+
# Test creating a shared memory segment without size argument
3839+
with self.assertRaises(ValueError):
3840+
sms_invalid = shared_memory.SharedMemory(create=True)
3841+
38303842
def test_shared_memory_across_processes(self):
38313843
# bpo-40135: don't define shared memory block's name in case of
38323844
# the failure when we run multiprocessing tests in parallel.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Prevent creating :class:`shared_memory.SharedMemory` objects with :code:`size=0`.

0 commit comments

Comments
 (0)