Skip to content

Comments

fix: 增加 Worker 进程孤儿检测以应付 Runner 进程的异常退出#1459

Closed
Ronifue wants to merge 0 commit intoMai-with-u:devfrom
Ronifue:dev
Closed

fix: 增加 Worker 进程孤儿检测以应付 Runner 进程的异常退出#1459
Ronifue wants to merge 0 commit intoMai-with-u:devfrom
Ronifue:dev

Conversation

@Ronifue
Copy link
Contributor

@Ronifue Ronifue commented Dec 24, 2025

    • main 分支 禁止修改,请确认本次提交的分支 不是 main 分支
    • 我确认我阅读了贡献指南
    • 本次更新类型为:BUG 修复
    • 本次更新类型为:功能新增
    • 本次更新是否经过测试
  1. 请填写破坏性更新的具体内容(如有):

  2. 请简要说明本次更新的内容和目的:修复 Runner 进程非正常终止(SIGKILL/SIGTERM)时 Worker 进程残留的问题

  3. 需要提到几个潜在的边缘情况就是(要是遇到了就去买彩票吧):

    • 如果 Worker 进程的主线程被阻塞,导致 SIGINT 无响应(当然这一般不太可能),而我调用的是 graceful_shutdown ,孤儿 Worker 进程就退出不了了,那就不是我的锅了,用户自己去 KILL 吧(

    • 如果用户的 Windows 环境权限极度受限,连 OpenProcess 都无法调用来获取父进程句柄(尽管是父子关系),Worker 就会触发 Fail-safe 机制直接退出

    • Windows 上更罕见的边缘情况就是,旧的 Runner 进程刚死,新进程立马占用了同一个 PID,也就是说要同时满足:

      • 父进程在 2 秒检测间隔内死亡
      • 操作系统立即分配了相同的 PID 给新进程
      • 新进程恰好是当前用户权限下的进程
      • 新进程调用 GetExitCodeProcess 时仍返回 STILL_ACTIVE

      那我也没招,这种神秘情况怎么可能发生(

@Ronifue
Copy link
Contributor Author

Ronifue commented Dec 24, 2025

还有在此向 @HyperSharkawa 道个歉,我重新看了一下我昨晚在那个 Pr 里面的评论 #1445 ,我的措辞不仅夹杂的莫名其妙的人身攻击,而且非常不理智。

我承认我有时候说话确实不过脑子,同为项目的贡献者,你也是来贡献代码的,你的回复没有问题,我不应该用那样情绪化的语言质疑你的回复,这是我的问题,在此向你致歉,我绝不希望我的态度成了阻碍项目变好的绊脚石。

无论你是否决定继续为MaiBot贡献代码,我都感谢你之前的 fix 尝试和提出的看法、找到的问题,它至少帮助大家找到了一个方向。

Respect

@Ronifue Ronifue changed the title fix: 增加 Worker 进程孤儿检测与自动优雅退出机制 fix: 增加 Worker 进程孤儿检测以应付 Runner 进程的异常退出 Dec 24, 2025
@Ronifue Ronifue mentioned this pull request Feb 10, 2026
5 tasks
@Ronifue Ronifue closed this Feb 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant