External pager resets custom SIGINT handlers to SIG_DFL
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Commencez par More() dans fire/console/console_io.py et examinez comment le paginateur externe est exécuté et comment les exceptions sont gérées. Enregistrez le gestionnaire actif avant que SIGINT soit ignoré, puis veillez à ce qu’il soit restauré après la fin du paginateur, y compris en cas d’exception. La tâche est terminée lorsque le gestionnaire précédent reste installé dans les deux cas ; l’issue ne fournit aucun fichier de test, identifiez donc un test approprié pour ce comportement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
In fire/console/console_io.py, the More() function temporarily ignores SIGINT while an external pager runs.
However, it restores SIG_DFL instead of the handler previously installed by the application.
Problematic code
signal.signal(signal.SIGINT, signal.SIG_IGN)
# Execute external pager
signal.signal(signal.SIGINT, signal.SIG_DFL)
Expected behavior
The function should preserve the existing signal handler and restore it after the pager exits, including when an exception occurs.
Actual behavior
Based on the code, applications using custom SIGINT handlers lose their original handler after pager execution. Exceptions may also leave SIGINT ignored.
Suggested fix
Save the original handler and restore it in a finally block.
Testing
Identified through source-code inspection. An interactive pager reproduction has not yet been executed.
- Langage dominant
- Python
- Étoiles
- 28.2k
- Forks
- 1.5k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire 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.
Autres issues de google/python-fire
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
google/python-fire#733 ·
-
EllipsisMiddleTruncate exceeds requested width when only the ellipsis fitsPeut-être pris @hugosmoreira l’a pris il y a 14 jours. Ouverte
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
google/python-fire#722 · 1 commentaire ·
-
Windows ANSI initialization uses nonexistent subprocess.STD_OUTPUT_HANDLEPeut-être pris @Fire162 l’a pris il y a 11 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
google/python-fire#721 · 1 commentaire ·
-
Setup docs still say `python setup.py install`, but `setup.py` was removedPeut-être pris @GreedyC l’a pris il y a 18 jours. Ouverte
Difficulté 1/5 1-3 heures Accessibilité débutants 93/100
google/python-fire#718 · 1 commentaire ·
-
Calling an async command from an active event loop raises RuntimeError and leaves an unawaited coroutinePeut-être pris @aashish254 l’a pris il y a 20 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google/python-fire#716 ·
Toutes les issues de google/python-fire
Issues similaires
-
`destroy` sans terminal répond « Aborted. » au lieu de réclamer `--yes` comme `clean` et `reset`Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
stephrobert/dsoxlab#354 ·
Les mainteneurs répondent en général sous 1 jour
-
hardware help wanted testing
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
jasonacox/pypowerwall#472 ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: DoubleMLRDDData accepts a score_col that is no data column (as in its docstring example); the running variable then becomes a covariate and RDFlex failsPeut-être pris @vrjdev l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
DoubleML/doubleml-for-py#455 ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: Python mod.Box[T] annotation gets a false generic_arg edge that replaces the parameter_type one ('is' on tree-sitter nodes)Peut-être pris @rohit-jsfreaky l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Graphify-Labs/graphify#5110 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours