TH1/MD/CrashSight_2026-05-19_0.7.1ijk_1day/blocking/037_Action_db05900c7f2c2d0e04dd82b3748abede.md
2026-05-19 21:30:19 +08:00

2.6 KiB
Raw Blame History

CrashSight 阻断报告 - db05900c7f2c2d0e04dd82b3748abede

原始异常

异常消息: -

关键堆栈: UnityEngine.Debug.LogError(Object)

反混淆结果

## db05900c7f2c2d0e04dd82b3748abede
异常名: UnityLogError
首次上报异常消息: -
累计发生次数: 1,590
版本: 0.7.1k 1,415; 0.7.1j 175
Stack Trace:
UnityEngine.Debug.LogError(Object)
cfo.iqk [方法: RuntimeData.MapData.FindDifferences(RuntimeData.MapData)](cfo [类型: RuntimeData.MapData])
cxb.ggu [方法: TH1_Logic.Steam.GameNetReceiver.OnReceivedForceUpdate(TH1_Logic.Steam.ForceUpdateMessage)](eor [类型: TH1_Logic.Steam.ForceUpdateMessage])
cxb.ggn [方法: TH1_Logic.Steam.GameNetReceiver.OnMessageReceived(System.Byte[])](Byte[])
bae.lim [方法: TH1_Logic.Steam.SimpleP2P.TryHandleOrderedMessage(Steamworks.CSteamID,System.Byte[])](CSteamID, Byte[])
bae.lik [方法: TH1_Logic.Steam.SimpleP2P.HandleReceivedConnectionPayload(Steamworks.CSteamID,System.Byte[])](CSteamID, Byte[])
bae.frx [方法: TH1_Logic.Steam.SimpleP2P.PollMessagesForConnection(Steamworks.CSteamID,Steamworks.HSteamNetConnection)](CSteamID, HSteamNetConnection)
bae.frw [方法: TH1_Logic.Steam.SimpleP2P.PollMessages()]()
bag.fud [方法: TH1_Logic.Steam.SteamLobbyManager.Update()]()
TH1_Logic.Core.Main.Update()

代码定位

  • F:/th1new/Unity/Assets/Scripts/TH1_Logic/Steam/GameNetReceiver.cs:198 - MapConfirm 校验
  • F:/th1new/Unity/Assets/Scripts/TH1_Data/MapData.cs:2603 - FindDifferences 输出差异
  • F:/th1new/Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1196 - 执行后比对 CheckMapData

触发原因与阻断判断

判断: 多人同步阻断,可能触发 ForceUpdate、回滚/恢复,严重时双方继续分叉。

原因: MapConfirm/ForceUpdate 发现 action 索引、ActionData 或 MapHash 不一致。MapData.FindDifferences 会输出前后 action 和对象字段差异;这表示至少一个 peer 的权威地图已经分叉。

建议

按报告中的“前/后 Action”回查该 action 的 Execute 是否使用非确定随机、真实 UI/Renderer、副作用或未同步字段ForceUpdate 应保持原子恢复。

备注

反混淆工具会对极短英文词偶发误命中;本报告只采信调用栈符号和项目内可定位日志,不把普通英文单词当作解码结论。