Python 3.13 Error Walking Stack w/ PYTHONASYNCIODEBUG=1

Aberta
#730 2 comentários 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
python
Domínio
backend, networking

Direção de pesquisa

Comece executando a reprodução fornecida do Docker a partir de Dockerfile.latest com repro.py no Python 3.13 e PYTHONASYNCIODEBUG=1 e, em seguida, compare-a com o ambiente em que a variável não está definida. Rastreie a falha na caminhada da pilha que envolve o gerador assíncrono e os frames C; considera-se concluído quando a reprodução termina com sucesso com o modo de depuração habilitado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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")
Linguagem predominante
Cython
Estrelas
11.9k
Forks
615
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de MagicStack/uvloop

Todas as issues de MagicStack/uvloop

Issues semelhantes

Mais issues de Backend & API Design

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.