python / python/cpython

ShareableList removes trailing zeroes from strings and bytes

Ouverte
#96,779 1 commentaire 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

topic-multiprocessing type-bug
Langage dominant
Python
Étoiles
77.2k
Forks
36k
Merge moyen
1 j 9 h
PR mergées (30 j)
558

Description

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?

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans Lib/multiprocessing/shared_memory.py et inspectez les trois emplacements de ShareableList qui utilisent rstrip(b'\x00') ; reproduisez l’exemple fourni pour confirmer le comportement. La tâche est terminée lorsque les chaînes et les octets conservent les zéros de fin, que le comportement existant de ShareableList reste intact et qu’une couverture de régression a été ajoutée à l’endroit où se trouvent les tests du projet pour ce point d’entrée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
operating-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.