[node-core-library] SubprocessTerminator ignores SIGHUP, so detached children outlive a closed terminal
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 75/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
- Domaine
- backend, operating-systems
Piste de recherche
Commencez par lire SubprocessTerminator dans le package @rushstack/node-core-library, en particulier _ensureInitialized et _cleanupChildProcesses, mentionnés dans l’issue. Vérifiez le comportement existant de SIGINT/SIGTERM et ses tests, puis vérifiez que SIGHUP est pris en charge et nettoyé sur les systèmes autres que Windows. Le travail est terminé lorsque la reproduction ne laisse plus le processus enfant détaché s’exécuter après la fermeture du terminal ou la réception de SIGHUP.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🤖 Filed by GitHub Copilot acting for @namankanakiya (light review only).
Package: @rushstack/node-core-library 5.25.1. Linux/macOS (non-Windows).
Repro: script.js:
const { SubprocessTerminator } = require('@rushstack/node-core-library');
const c = require('child_process').spawn('sleep', ['1000'], SubprocessTerminator.RECOMMENDED_OPTIONS);
SubprocessTerminator.killProcessTreeOnExit(c, SubprocessTerminator.RECOMMENDED_OPTIONS);
setInterval(() => {}, 1000);
Run it in a terminal, then close the terminal (or kill -HUP <pid>).
Observed: sleep keeps running with ppid 1. RECOMMENDED_OPTIONS (detached: true) puts the child in its own session, so the terminal's hangup never reaches it, and killProcessTreeOnExit only handles SIGINT, SIGTERM and exit. With SIGINT or SIGTERM the child is killed as expected.
Expected: on non-Windows, SIGHUP is handled like SIGINT/SIGTERM, so closing the terminal of a tool that uses SubprocessTerminator does not leak its detached children.
Suggested fix: in _ensureInitialized, also process.prependListener('SIGHUP', _onTerminateSignal), and remove it in _cleanupChildProcesses.
Happy to test a candidate fix.
- Langage dominant
- TypeScript
- Étoiles
- 6.5k
- Forks
- 710
- Merge moyen
- 1 j 13 h
- PR mergées (30 j)
- 45
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun 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 microsoft/rushstack
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.Peut-être pris @martinnaj l’a pris il y a 14 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/rushstack#5971 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
microsoft/rushstack#5902 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de microsoft/rushstack
Issues similaires
-
afk-ok area:data-quality importer size:S
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
enorm-labs/event-junkie#3301 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
one-zero-eight/apply-bot#39 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
bigbluebutton/bbb-ui-components-react#108 ·
Les mainteneurs répondent en général sous 2 jours
-
area: app type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
ExpidetGames/code-reviewer#308 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour