MagicStack / MagicStack/uvloop
Python 3.13 Error Walking Stack w/ PYTHONASYNCIODEBUG=1
Nessuno ha ancora preso questa issue.
- Lingua principale
- Cython
- Stelle
- 11.9k
- Fork
- 616
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
There appears to be a bug in uvloop for python 3.13 walking the stack when PYTHONASYNCIODEBUG=1 and there are c frames in the stack.
I suspect this is tied to changes in 3.13 with how python handles frames
To Repro:
Python 3.13
uvloop 0.22.1 (also confirmed it happens
run: docker build -f Dockerfile.latest -t crash-test-latest . 2>&1 | tail -3 && echo "---" && docker run --rm crash-test-latest 2>&1; echo "exit: $?"
exits w/ 139
If you go into the dockerfile and set ENV PYTHONASYNCIODEBUG= (instead of 1), exits w/ 0
Dockerfile:
FROM python:3.13-slim
RUN pip install uvloop==0.22.1
ENV PYTHONASYNCIODEBUG=1
COPY repro.py /repro.py
CMD ["python3", "/repro.py"]
Repro.py
import asyncio
import sys
import os
print(f"Python: {sys.version}")
print(f"Platform: {sys.platform}")
print(f"PYTHONASYNCIODEBUG: {os.environ.get('PYTHONASYNCIODEBUG', '<not set>')}")
import uvloop
print(f"uvloop: {uvloop.__version__}")
async def gen():
yield 1
yield 2
async def main():
x = gen()
await x.__anext__()
# x goes out of scope on function exit
uvloop.install()
asyncio.run(main())
print("NO CRASH")
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo la riproduzione Docker fornita da Dockerfile.latest con repro.py in Python 3.13 e PYTHONASYNCIODEBUG=1, quindi confrontala con l’ambiente in cui la variabile non è impostata. Traccia il fallimento nell’attraversamento dello stack che coinvolge il generatore asincrono e i frame C; il lavoro è completato quando la riproduzione termina correttamente con la modalità di debug abilitata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- backend, networking
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100