现象与复现
真机 Switch 10.10.10.17,deko 诊断构建 71a2d65,串流《黑神话:悟空》。用户报告:
- 在客户端选择“结束游戏”。
- 电脑端游戏已经退出,客户端仍等待游戏结束,随后提示超时。
- 按 A 重试后,电脑端重新启动了游戏。
- 用户在客户端取消,并在电脑上 Alt-F4 关闭游戏。
本条先记录为独立缺陷,不将主机已退出的用户观察改写为“主机未退出”。
证据
设备日志依次出现:
command: type=4 generation=2 host=1
user end game: reliable StopRequest queued; awaiting host completion
Activity: SetActivity activity=3 gameid=413080 name=
cleanup: session disconnect/join
Session: Host stopped the session
session end: explicit host stop
cleanup: session destroyed
未能确认游戏已结束,请检查电脑。
command: type=5 generation=1 host=0
...
command: type=2 generation=3 host=1
...
command: type=3 generation=4 host=1
本地完整证据:build/switch-deko/interactive-runs/71a2d65/session.log,关键行约 1125–1261。
日志并未直接记录电脑进程状态;电脑退出/重启以用户观察为证据。
源码(71a2d65):
app/src/ui/ui_model.c 的 SL_RETRY 在 SL_ERROR 上统一使用保留的连接 intent,已配对主机发出 SL_CMD_STREAM,未区分结束游戏失败与连接失败。
app/platforms/common/runtime.c 的 END_GAME 路径发送 StopRequest;结束监视依赖 end_game.empty >= 2,15 秒后按未确认退出失败处理。
结论与待验证
- 重试重开游戏有源码和命令日志支撑:结束操作的错误页进入了通用串流重试流程。
- 为什么电脑已退出后仍未满足结束确认条件:待验证。应结合 activity、发现状态时间戳、gamesRunning、host-stop 回调与超时处理的时序审查,不能仅凭这份日志认定主机协议错误。
验收条件
- 结束游戏的失败/超时必须保留操作类型,重试不能发起启动或串流请求。
- 主机退出事实、结束确认、会话停止与 15 秒超时交错时,UI 进入正确终态,不把已完成操作恢复成启动意图。
- 覆盖未收到确认、重复 A、超时与 host-stop 同时发生、取消后迟到回调;本地受控测试先行,真机测试自动采集日志。
现象与复现
真机 Switch 10.10.10.17,deko 诊断构建 71a2d65,串流《黑神话:悟空》。用户报告:
本条先记录为独立缺陷,不将主机已退出的用户观察改写为“主机未退出”。
证据
设备日志依次出现:
本地完整证据:
build/switch-deko/interactive-runs/71a2d65/session.log,关键行约 1125–1261。日志并未直接记录电脑进程状态;电脑退出/重启以用户观察为证据。
源码(71a2d65):
app/src/ui/ui_model.c的SL_RETRY在SL_ERROR上统一使用保留的连接 intent,已配对主机发出SL_CMD_STREAM,未区分结束游戏失败与连接失败。app/platforms/common/runtime.c的 END_GAME 路径发送 StopRequest;结束监视依赖end_game.empty >= 2,15 秒后按未确认退出失败处理。结论与待验证
验收条件