New REPL crash (and terminal display issues) after a breakpoint and by sending Ctrl + D input
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
In a really specific scenario, the terminal can go crazy and becomes unresponsive:
https://github.com/user-attachments/assets/d9986c12-aa66-4e3c-bc69-840af79eec95
Steps to reproduce:
- Create an
issue.pyfile, with a breakpoint set (echo 'breakpoint()' > issue.py). - Run
issue.pyin interactive mode:python -i issue.py - Press C to continue when hitting the breakpoint.
- Start typing something, e.g.
help( - Input Ctrl + D, as if you wanted to exit the terminal. Nothing happens (as it should).
- Input Ctrl + C, as if you wanted to clear the line.
If no breakpoint was hit before, this works as expected:
>>> help( # hit Ctrl + D then Ctrl + C
KeyboardInterrupt
Note trying to reproduce on Python 3.12, the following happens:
--Return--
> /home/victorien/ws/pydantic/issue.py(1)<module>()->None
-> breakpoint()
(Pdb) c
>>> help( # hit Ctrl + D then Ctrl + C
Program interrupted. (Use 'cont' to resume).
--Return--
> /home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/pdb.py(271)sigint_handler()->None
-> self.set_trace(frame)
Traceback (most recent call last):
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/pdb.py", line 271, in sigint_handler
self.set_trace(frame)
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/bdb.py", line 94, in trace_dispatch
return self.dispatch_return(frame, arg)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/bdb.py", line 153, in dispatch_return
self.user_return(frame, arg)
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/pdb.py", line 362, in user_return
self.interaction(frame, None)
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/pdb.py", line 428, in interaction
self._cmdloop()
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/pdb.py", line 390, in _cmdloop
self.cmdloop()
File "/home/victorien/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/lib/python3.12/cmd.py", line 126, in cmdloop
line = input(self.prompt)
^^^^^^^^^^^^^^^^^^
RuntimeError: can't re-enter readline
>>>
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez la séquence du terminal avec Python 3.13, puis commencez par examiner l’interaction de readline à travers pdb.py, bdb.py et cmd.py, y compris le RuntimeError signalé concernant la réentrée dans readline. C’est terminé lorsque le flux des points d’arrêt ne laisse plus la REPL sans réponse et ne plante plus après Ctrl+D suivi de Ctrl+C, avec une couverture de régression pour ce scénario.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli, devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100