[node-core-library] SubprocessTerminator ignores SIGHUP, so detached children outlive a closed terminal
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 75/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- node.js, typescript
调研方向
首先阅读 @rushstack/node-core-library 包中的 SubprocessTerminator,尤其是 issue 中提到的 _ensureInitialized 和 _cleanupChildProcesses。检查现有的 SIGINT/SIGTERM 行为及其测试,然后验证在非 Windows 系统上 SIGHUP 是否得到处理和清理。完成标准是:关闭终端或收到 SIGHUP 后,复现过程不再留下仍在运行的已分离子进程。
由索引模型根据 Issue 内容生成。
描述
🤖 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.
- 主要语言
- TypeScript
- 星标
- 6.5k
- 派生
- 710
- 平均合并
- 1 天 13 小时
- 30 天内合并 PR
- 45
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/rushstack 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.可能已有人在做 @martinnaj 于 8 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
microsoft/rushstack#5971 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
microsoft/rushstack#5902 · 1 个 reaction ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
microsoft/rushstack#5839 · 1 个 reaction ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
microsoft/rushstack#5683 · 3 条评论 ·
维护者通常 1 天内回复
查看 microsoft/rushstack 的全部 Issue
相似的 Issue
-
area: backend bug priority: low
难度 2/5 1-3 小时 新手友好度 78/100
snapotter-hq/SnapOtter#2254 ·
维护者通常 1 天内回复
-
bug ticket
难度 2/5 1-3 小时 新手友好度 72/100
cratestack/cratestack#1154 ·
维护者通常 1 天内回复
-
server 消息处理器 cmd 分支补显式错误回报——竞态非法命令现走未处理拒绝可能已有人在做 @openaddr 今天认领。 未关闭ready-for-agent refactor wayfinder:task
难度 2/5 1-3 小时 新手友好度 72/100
openaddr/dafung-web#428 ·
维护者通常 1 天内回复
-
Flaky: mongodb-memory-server 'Port already in use' when another process starts a mongod concurrently未关闭area:testing bug effort:S priority:P2
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
lens:agent lens:process process
难度 2/5 1-3 小时 新手友好度 82/100
thebristolsound/birdbrain#1772 ·
维护者通常 1 天内回复