python / python/cpython

ShareableList removes trailing zeroes from strings and bytes

Offen
#96,779 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

topic-multiprocessing type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

from multiprocessing.shared_memory import ShareableList
s, b = '\x00\x01\x00', bytes([0,1,0])
sl = ShareableList([s, b])
s == sl[0], b == sl[1]

gives (False, False) because the trailing zeroes get lost in the ShareableList: sl holds ShareableList(['\x00\x01', b'\x00\x01'], name='wnsm_...'). I would expect that strings and bytes keep the trailing zeroes also when added to a ShareableList.

Your environment

  • CPython versions tested on: 3.8.5, 3.10.6
  • Operating system and architecture: Windows 10, 64bit

Analysis

There are three places in class ShareableList in Lib/multiprocessing/shared_memory.py, where trailing zeroes are explicitely removed: ...rstrip(b'\x00').... For what reason?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie in Lib/multiprocessing/shared_memory.py und untersuchen Sie die drei ShareableList-Stellen, an denen rstrip(b'\x00') verwendet wird; reproduzieren Sie das bereitgestellte Beispiel, um das Verhalten zu bestätigen. Die Aufgabe ist abgeschlossen, wenn Zeichenfolgen und Bytes nachgestellte Nullen beibehalten, während das bestehende ShareableList-Verhalten intakt bleibt, und eine Regressionstestabdeckung dort hinzugefügt wurde, wo die Tests des Projekts für diesen Einstiegspunkt hingehören.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
operating-systems
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.