TH1/MD/CrashSight_2026-06-08_0.7.3d_1day/blocking/001_steamworks-not-initialized.md
2026-06-08 14:36:31 +08:00

14 KiB
Raw Blame History

Steamworks 未初始化

  • 分类blocking
  • Issue 数5
  • 0.7.3d 最近一天次数23
  • 设备数合计5
  • 报告生成2026-06-08 12:00:23

Issue

Issue 类型 次数 设备 最近上报 消息
6824d854c4dbc78d5d41cc0cba4081fb UnityLogError 2 1 2026-06-08 02:53:02 EventManager Publish listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i…
341f705a3c788ba90fbf37396a4c9470 InvalidOperationException 12 1 2026-06-08 02:53:01 Steamworks is not initialized.
8605ccfc9311840c54f1e112669c6c4a UnityLogError 4 1 2026-06-08 02:52:15 [UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000…
589a482d3aa15b5adaf39c75d3caa9de InvalidOperationException 3 1 2026-06-08 02:51:54 Steamworks is not initialized.
ee679306da516a599fea816f2ff6653f UnityLogError 2 1 2026-06-08 02:51:50 EventManager Publish listener failed: System.InvalidOperationException: Steamworks is not initialized. at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] i…

设备上下文

6824d854c4dbc78d5d41cc0cba4081fb

  • 样本 CrashIddc5a7d5390154232ae8c317e6f75d529
  • 样本 DeviceIdd8-43-ae-40-07-48
  • CrashSight 附带日志文件:False

最终上报内容:

UnityLogError
EventManager Publish<ShowUIOutsideMultiplay> listener failed: System.InvalidOperationException: Steamworks is not initialized.
  at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 
  at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0 
  at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.geh (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0 
  at eqy`1[c].fab () [0x00000] in <00000000000000000000000000000000>:0 
  at eqy`1[c].ezp () [0x00000] in <00000000000000000000000000000000>:0 
  at ern.gyd (TH1_Core.Events.ShowUIOutsideMultiplay a) [0x00000] in <00000000000000000000000000000000>:0 
  at erk.fcv[c] (c a) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ProcessMo
...

同设备最近 ERROR 上报序列:

时间 Issue 类型 消息
2026-06-08 04:58:25 01eaa6aefd9162eccc930c2450a63779
2026-06-08 04:57:42 83c9b6c1eea0ae92d6b66badbaa27e7e
2026-06-08 04:33:42 3bc5a22f6a9337370157faff19a8ca0c
2026-06-08 04:15:17 d116ee978d571e6e4e724c4960a72749
2026-06-08 04:15:16 d88f95adc2574a43b1eeb055b13ac429
2026-06-08 04:15:15 014f2af002726c961daa88e566b11cfe
2026-06-08 04:15:14 492047903afcb93f2596ccd48e815cce
2026-06-08 04:15:10 f42736b37a7704becb2a1a0dfbeeb8ce

341f705a3c788ba90fbf37396a4c9470

  • 样本 CrashId3e6389b4d15046859540940b92a7bc1e
  • 样本 DeviceIdd8-43-ae-40-07-48
  • CrashSight 附带日志文件:False

最终上报内容:

InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)

Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)

Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)

InvalidOperationException
Steamworks is not initialized.
Steamworks.InteropHelp.TestIfAvailableClient () (at <00000000000000000000000000000000>.0)
Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) (at <00000000000000000000000000000000>.0)
bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) (at <00000000000000000000000000000000>.0)
TH1_UI.View.Outside.UIOutsideMultiplayView.dio () (at <00000000000000000000000000000000>.0)

同设备最近 ERROR 上报序列:

时间 Issue 类型 消息
2026-06-08 04:58:25 01eaa6aefd9162eccc930c2450a63779
2026-06-08 04:57:42 83c9b6c1eea0ae92d6b66badbaa27e7e
2026-06-08 04:33:42 3bc5a22f6a9337370157faff19a8ca0c
2026-06-08 04:15:17 d116ee978d571e6e4e724c4960a72749
2026-06-08 04:15:16 d88f95adc2574a43b1eeb055b13ac429
2026-06-08 04:15:15 014f2af002726c961daa88e566b11cfe
2026-06-08 04:15:14 492047903afcb93f2596ccd48e815cce
2026-06-08 04:15:10 f42736b37a7704becb2a1a0dfbeeb8ce

8605ccfc9311840c54f1e112669c6c4a

  • 样本 CrashIdf31dcb44222a498c839f0dfde39f2662
  • 样本 DeviceIdd8-43-ae-40-07-48
  • CrashSight 附带日志文件:False

最终上报内容:

UnityLogError
[UIOutsideMultiplay] LeaveRoom exception: System.InvalidOperationException: Steamworks is not initialized.
  at Steamworks.InteropHelp.TestIfAvailableClient () [0x00000] in <00000000000000000000000000000000>:0 
  at Steamworks.SteamMatchmaking.AddRequestLobbyListDistanceFilter (Steamworks.ELobbyDistanceFilter eLobbyDistanceFilter) [0x00000] in <00000000000000000000000000000000>:0 
  at bag.jdo (Steamworks.ELobbyDistanceFilter a, System.Int32 b, System.String c, System.String d, System.Boolean e) [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.dio () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.bei () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_UI.View.Outside.UIOutsideMultiplayView.cou () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.EventSystems.EventSystem.Update () [0x00000] in <00000000000000000000000000000000>:0 
UnityEngine.Debug.LogError(Object)
TH1_UI.View.Outside.UIOutsideMultiplayView.cou()
Unity
...

同设备最近 ERROR 上报序列:

时间 Issue 类型 消息
2026-06-08 04:58:25 01eaa6aefd9162eccc930c2450a63779
2026-06-08 04:57:42 83c9b6c1eea0ae92d6b66badbaa27e7e
2026-06-08 04:33:42 3bc5a22f6a9337370157faff19a8ca0c
2026-06-08 04:15:17 d116ee978d571e6e4e724c4960a72749
2026-06-08 04:15:16 d88f95adc2574a43b1eeb055b13ac429
2026-06-08 04:15:15 014f2af002726c961daa88e566b11cfe
2026-06-08 04:15:14 492047903afcb93f2596ccd48e815cce
2026-06-08 04:15:10 f42736b37a7704becb2a1a0dfbeeb8ce

代码位置

  • Unity/Assets/Scripts\TH1_Logic\Editor\SteamEditorWindow.cs:168: if (InspectorUtils.InspectorButtonWithTextWidth("搜索")) lobby.SearchPublicLobbies();
  • Unity/Assets/Scripts\TH1_Logic\Steam\SteamLobbyManager.cs:1152: public void SearchPublicLobbies(ELobbyDistanceFilter filter = ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide,
  • Unity/Assets/Scripts\TH1_UI\View\Outside\UIOutsideMultiplayView.cs:1977: _lobby.SearchPublicLobbies();

解码结论

5 个 Issue 合并为同一根因:联机大厅 UI 在 Steamworks 未初始化或未登录完成时仍调用大厅搜索,SteamLobbyManager.SearchPublicLobbies() 直接进入 SteamMatchmaking.AddRequestLobbyListDistanceFilter()Steamworks C# 层抛出 InvalidOperationException: Steamworks is not initialized.

解码后的主要链路:

  • TH1_Core.Managers.EventManager.Publish<ShowUIOutsideMultiplay>() -> UIEventManagerBinder.HandleShowUIOutsideMultiplay() -> ViewController._TryOpen() -> UIOutsideMultiplayView.SetContent() -> UIOutsideMultiplayView.SetNoRoom() / OnRefreshLobbyClicked() -> SteamLobbyManager.SearchPublicLobbies()
  • 关闭按钮也会触发同源链路:UIOutsideMultiplayView.<OnInit>b__92_0() -> LeaveRoom() -> RefreshAll() -> RefreshRoomInfo() -> SetNoRoom() -> OnRefreshLobbyClicked()
  • 直接异常上报和 EventManager Publish / LeaveRoom exception 包装上报都落在同一个 Steamworks API 调用点。

代码定位:

  • Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMultiplayView.cs:323 打开联机界面后无条件初始搜索。
  • Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMultiplayView.cs:1415 无房间状态下再次无条件搜索。
  • Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideMultiplayView.cs:1975OnRefreshLobbyClicked() 没有 _lobby.IsInitialized() 或 Steam 可用性守卫。
  • Unity/Assets/Scripts/TH1_Logic/Steam/SteamLobbyManager.cs:1152SearchPublicLobbies() 没有调用已有的 EnsureSteamReadyForLobbyAction() / TrySteamApi() 保护,1158 直接调用 Steamworks。

合并依据:所有 5 个 Issue 都在同一设备 d8-43-ae-40-07-48 的 2026-06-08 02:50:53 至 02:53:02 连续出现,样本栈都指向 SearchPublicLobbies() -> AddRequestLobbyListDistanceFilter()。后续同设备还有 P2P/ForceUpdate 诊断,但这些在该阻断样本之后出现,当前 API 样本不能证明它们是触发源。

建议聚焦:在 UI 搜索入口和 SteamLobbyManager.SearchPublicLobbies() 两层都做 Steam 初始化/登录/P2P ready 守卫;底层 Steam API 调用改走 TrySteamApi 或等价保护,失败时只刷新 UI 提示,不进入 CrashSight ERROR。这个根因还可能造成大厅打开、无房间刷新、自动刷新、关闭返回菜单时反复上报并让玩家看到房间列表空白或无法刷新。

判断

这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。 本批样本 hasLogFile=falseAPI 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。

建议

优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。