python / python/cpython

Free threaded: slicing a shared memoryview raises `ValueError: operation forbidden on released memoryview object`

Offen
#155,606 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

interpreter-core topic-free-threading type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

Hello (and thanks for your amazing work),

I found that, on free threading Python, slicing a shared memoryview from several threads raises ValueError: operation forbidden on released memoryview object, even though nothing calls .release() and the underlying object is an immutable bytes. Stock (GIL) builds are unaffected.

data = bytes(1 << 20)
mv = memoryview(data)                   # ONE view, shared
# in each of 8 threads:  bytes(mv[0:64])

See the attached reproduction script. Results are not deterministic: not all threads raise an exception. Here are the results on my machine after running it:

$ PYTHON_GIL=0 python3.15t repro_shared_memoryview_threads.py
python 3.15.0rc1 gil_enabled=False: 3/8 threads FAILED -> ValueError('operation forbidden on released memoryview object')
$ PYTHON_GIL=1 python3.15t repro_shared_memoryview_threads.py
python 3.15.0rc1 gil_enabled=True: all 8 threads OK
CPython versions tested on:

3.15

Operating systems tested on:

Linux

Linked PRs
  • gh-155882

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

Beginne mit dem angehängten Skript repro_shared_memoryview_threads.py und vergleiche dessen Ergebnisse unter PYTHON_GIL=0 und PYTHON_GIL=1 in Python 3.15. Untersuche das Verhalten von shared memoryview in der free-threaded Runtime; die Aufgabe ist erledigt, wenn gleichzeitiges Slicing nicht mehr den gemeldeten ValueError auslöst. Der verknüpfte PR gh-155882 zeigt, dass die Arbeit daran bereits begonnen hat.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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