Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34.2k
Open
Description
Bug report
Bug description:
Issue
ShareableList allocates string slots based on character count instead of UTF-8 byte count, causing corruption for multi-byte characters. Additionally,rstrip(b'\x00') strips legitimate trailing null bytes frombytes values.
Note: The trailing null bytes issue was originally reported in#106939 (July 2023) and documented as a known issue with a workaround. This fix attempts to resolve both that long-standing issue and the newly discovered UTF-8 corruption bug.
Reproducer
frommultiprocessing.shared_memoryimportShareableList# String corruptionsl=ShareableList(['0\U00010000\U00010000'])print(sl[0])# UnicodeDecodeErrorsl.shm.close();sl.shm.unlink()# Bytes corruptionsl=ShareableList([b'\x00'])print(repr(sl[0]))# b'' instead of b'\x00'sl.shm.close();sl.shm.unlink()
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
Metadata
Metadata
Assignees
Labels
Projects
Status
No status