Spawning a subprocess crashes the interpreter if subinterpreters exist
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Comece executando a MWE fornecida com uvloop 0.21.0 e Python 3.13.0 no Linux e, em seguida, compare-a com vanilla asyncio. Inspecione o caminho do subprocesso que envolve uvloop.new_event_loop e uvloop.loop, usando a linha 224 de asyncio/subprocess.py e o crash relatado como critérios de reprodução e conclusão.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
- uvloop version: 0.21.0
- Python version: 3.13.0
- Platform: Linux
- Can you reproduce the bug with
PYTHONASYNCIODEBUGin env?: yes - Does uvloop behave differently from vanilla asyncio? How?: vanilla asyncio doesn't crash
MWE:
import asyncio
import _interpreters as interpreters
import uvloop
async def main():
interp_id = interpreters.create()
await asyncio.create_subprocess_exec("sleep", "2")
interpreters.destroy(interp_id) # this is never reached
asyncio.run(main(), loop_factory=uvloop.new_event_loop)
Crash log:
Fatal Python error: PyThreadState_Get: the function must be called with the GIL held, after Python initialization and before Python finalization, but the GIL is released (the current Python thread state is NULL)
Python runtime state: initialized
Current thread 0x00007fa5713c8740 (most recent call first):
File "/usr/lib64/python3.13/asyncio/subprocess.py", line 224 in create_subprocess_exec
File "/home/alex/workspace/anyio/bug-trio.py", line 8 in main
File "/usr/lib64/python3.13/asyncio/runners.py", line 118 in run
File "/usr/lib64/python3.13/asyncio/runners.py", line 194 in run
File "/home/alex/workspace/anyio/bug-trio.py", line 12 in <module>
Extension modules: uvloop.loop (total: 1)
If I destroy the subinterpreter before spawning the subprocess, it works fine.
- 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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de MagicStack/uvloop
-
License not clear Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#759 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#741 · 2 reações ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#702 · 8 comentários · 9 reações ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
MagicStack/uvloop#763 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
MagicStack/uvloop#760 ·
Todas as issues de MagicStack/uvloop
Issues semelhantes
-
area/sessions comp/cron comp/gateway P2 sweeper:risk-message-delivery sweeper:risk-session-state type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
NousResearch/hermes-agent#118863 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
use-agent-os/agent-os#3312 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
needs-acceptance wg/data-plane-networking
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
vllm-project/semantic-router#4024 · 1 comentário ·