Skip to content

fix: WAA VM 后台刷新走 paniclog,panic 时仍关闭 done - #6

Merged
xiaohai1314-sys merged 2 commits into
mainfrom
fix/runtime-go-refresh-panic
Nov 11, 2026
Merged

xiaohai1314-sys merged 2 commits into
mainfrom
fix/runtime-go-refresh-panic

Conversation

@xiaohai1314-sys

Copy link
Copy Markdown
Owner

修复 internal/aistudio/runtime_go.go refreshVM 的后台 goroutine(上游 4427292 引入):

  • 裸 go func() 改为 paniclog.Go,panic 不再带崩进程
  • 收尾移入 defer:panic 时把错误写入 refresh.err,清除 runtime.refreshing(仅当仍指向本次重建),关闭 refresh.done,再交给 paniclog 记录堆栈;等待 proof 的调用方立即拿到错误,不用挂到 ctx 超时,下一次调用会重新发起重建
  • 持锁区间 panic 时,内层 defer vmMu.Unlock() 先执行,外层收尾再加锁,不会死锁

顺带:internal/desktop/tray_linux.go 的 DBus 信号监听也改走 paniclog(desktop 构建标签,PR 的 Checks 不编译它,desktop-linux 构建会覆盖)。

refreshVM 的后台 goroutine 原为裸 go func(),close(refresh.done) 不在 defer 中:
nextVM 或换装新 VM 时 panic 会带崩进程,等待 proof 的调用方也会挂到 ctx 超时。
改为 paniclog.Go,收尾移入 defer,panic 时写入错误、清除 refreshing(仅当仍是本次重建)、
关闭 done 后再交给 paniclog 记录。顺带把 Linux 托盘 DBus 信号监听也改走 paniclog。
@xiaohai1314-sys
xiaohai1314-sys marked this pull request as ready for review November 11, 2026 01:45
@xiaohai1314-sys
xiaohai1314-sys merged commit 8b3ad39 into main Nov 11, 2026
4 checks passed
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