Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[node-core-library] SubprocessTerminator ignores SIGHUP, so detached children outlive a closed terminal

Offen Anfängerfreundlich
#6,124 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
75/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
node.js, typescript

Rechercherichtung

Lies zunächst SubprocessTerminator im Paket @rushstack/node-core-library, insbesondere _ensureInitialized und _cleanupChildProcesses, die im Issue genannt werden. Prüfe das bestehende Verhalten für SIGINT/SIGTERM und die entsprechenden Tests und verifiziere anschließend, dass SIGHUP auf Nicht-Windows-Systemen behandelt und aufgeräumt wird. Fertig ist die Arbeit, wenn der Repro nach dem Schließen des Terminals oder bei SIGHUP keinen losgelösten Kindprozess mehr weiterlaufen lässt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

🤖 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.

Vorherrschende Sprache
TypeScript
Sterne
6.5k
Forks
710
Ø Merge
1 T. 13 Std.
Gemergte PRs (30 T.)
45

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

  • Kein Dockerfile und keine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/rushstack

Alle Issues in microsoft/rushstack

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.