Skip to content

fix(session): delete all 不应在 tmux teardown 失败后遗留无主进程 #1273

Description

@LPX-E5BD8

问题

botmux delete all 可能打印所有会话均已关闭、会话表也变为空,但原 session 的 tmux/Codex 进程仍继续运行,形成无持久记录的孤儿进程。

本次 Linux 实测中:

  • CLI 输出“已关闭 16 个会话”;
  • botmux list --plain 随后显示没有活跃会话;
  • 仍有 42 个携带 BOTMUX_SESSION_ID / BOTMUX=1 的 Codex 及子进程存活;
  • 对应进程由旧的默认 tmux server 持有;当前 PATH 中的 tmux client 与该 server 版本不兼容,命令返回 server version is too old for client
  • 手工按 BotMux 环境标记终止对应进程组后才能真正清空。

风险

  • 用户看到成功结果,但模型进程仍占用 CPU、内存及可能的凭证/工作目录。
  • session row 已关闭后,后续清理缺少可靠所有权入口。
  • 批量关闭把多个失败隐藏成全成功,运维无法感知残留。

代码线索

TmuxBackend.killSession() 捕获并吞掉所有 tmux 错误;live worker close 路径可能随后把 row 标为 closed。workerless/offline 路径已有 post-kill probe,但 live worker 路径仍可能在 backing teardown 失败后失去持久所有权记录。

期望

  • 显式关闭必须在确认 BotMux-owned backing 已终止后才报告普通成功;无法确认时 fail closed 或返回可见 residual。
  • delete all 汇总中应包含失败/残留计数,而不是仅显示“已关闭 N 个会话”。
  • 兼容 tmux client/server 版本不匹配、socket 不可达等错误,并避免误杀用户自有 tmux pane。
  • 增加真实 tmux 或受控 fake-tmux 回归测试,证明关闭失败不会丢失可重试的 session ownership。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions