Files
ft/CodexOutput/upserver/阶段4R1两处运行报错核查-2026-09-24.md

30 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# R1两处运行报错核查
本次仅定位并记录,不修改源码、不运行游戏、不写服务器。使用systematic-debugging流程核对源码、R1实施前快照、原始Editor.log、当前Console和进程事件。
## 结论
两条都与KV迁移接线有关,但不是刚刚那一行Advert cdTime兼容引起;第二条也不是File.Replace/目录权限问题。
| 报错 | 根因 | 性质 |
|---|---|---|
| InfiniteBuildingLevel NullReferenceException | 102合法缺InfiniteBuildingData;旧PlayerData默认是字符串0,DecodePlayer缺键返回null,Replace覆盖默认值后getter对null.Split | 4B2加载默认值回归,R1真实接线后暴露;阻塞正式关闭 |
| claimed文件已存在IOException | R1使用FileMode.CreateNew限制每个Unity进程一次登录;QuitAct结束2秒后Unload,原QuitStage无条件加载PreBoot,同进程再次进入BeforeBootstrap,命中已存在marker | 一次运行保护有效,但测试退出与原自动重启流程衔接不完整;未处理异常需补充裁决 |
## 直接证据
- PlayerData.cs:96旧字段初始化为`"0"`,:97为Split;旧InitData:839只在存在key时赋值。
- PlayerKVSaveSchema.cs:656 `string building=null`,PlayerData.cs:63把state.Building直接赋回。R1实施前before快照已有这两处,证明不是本轮Advert修改造成。
- 原PF102、最终KV102均缺InfiniteBuildingData,不是导入时删值或造出null。
- UserService.KVGameplayLoop.cs:65 CreateNew;:101 Claim发生在发布新会话之前。报错为File already exists,而非拒绝访问。
- QuitAct.cs:90 `Invoke("Unload",2f)`,QuitStage.cs:15无条件LoadSceneAsync("PreBoot")。Editor.log顺序:加载QuitStage→QuitAct清理→Bootstrap重新LoadConfig/RegisterServices→同一120896标记已存在异常。对应本次测试退出自动重进,不应推给用户手动重复Play。
- 120896事件流仍有06:25:56Z closed,因此会话排水关闭证据成立;但它**不等于整个退出/场景流无异常**。之前交付未充分列明退出后的这条异常,本记录补正。
- 当前CLI只读状态:playing=false、Ready=false、permitExists=false;两个claimed均保留。Console历史错误未清除,不能由红字推断仍在运行。
## 最小处理方向
1. 建筑缺键:只将DecodePlayer缺键默认值恢复为`"0"`,不改getter、不补写服务器key。新落盘《阶段4最小真实玩法闭环R1实施独立复核-2026-09-24.md》已批准该修订及专项回归;本次也核对210项受审hash全部一致。尚未进行实施裁决或编码。
2. 退出自动重进:保持一次运行保护和claimed,测试模式关闭后应结束本次运行/明确要求重启,不再走普通模式自动回PreBoot;不能以删除marker、FileMode.Create或吞IOException来放开第二会话。这是新补充发现,具体方法级改动及测试边界需纳入后续裁决,不能把保护抛错直接当成无缺陷退出。
证据:`KVGameplayLoopTests/error-investigation-20260924.json`保留两条Console完整堆栈;原Editor.log及两次run事件、服务器备份保持。R1继续未关闭。