Issue Description
更新器 inno_updater.exe (v0.17.1) 在静默更新时,仅强制终止了主进程 Qoder.exe(PID: 25012),但 未终止 shared_client 子进程(位于 D:\Qoder\.qoder\shared_client\bin\2026.709.1\x86_64_windows\Qoder.exe),导致 .lock 文件被持续锁定。更新器经过 32 次重试(约 138 秒)后报错:
Failed to create file handle: 另一个程序正在使用此文件,进程无法访问。
此外,kill 进程(03:41:05.557)与开始文件操作(03:41:05.567)之间仅间隔 10ms,Windows NT 内核来不及清理文件句柄。更新器也无 stale lock 检测机制,无法判断 .lock 持有者是否已崩溃。
Steps to Reproduce
- 启动 Qoder IDE,保持运行状态(有活跃 AI 对话或代码索引任务)
- 等待自动更新触发(凌晨)或手动 帮助 → 检查更新
- 更新器检测到
Qoder.exe进程仍在运行,等待 30 秒后强制终止 - 因
shared_client子进程未终止,.lock文件持续锁定,更新失败
Expected Behavior
更新器应通过进程树枚举终止所有 Qoder.exe 子进程(包括 shared_client、sandbox.exe),在 kill 后至少等待 3 秒,并从 .info.json 验证 PID 存活状态,若 lock 为 stale 则删除后继续。
Actual Behavior
更新器仅终止了单个 PID 25012,其余 14 个 Qoder.exe 进程仍存活。kill 后 10ms 即尝试获取 .lock 句柄,在子进程持续持有锁的情况下永远无法成功。