FirstGearGames / FishySteamworks

A Steamworks implementation for Fish-Net.
Other
69 stars 16 forks source link

InvalidOperationException Collection was modified #9

Open f2069 opened 2 months ago

f2069 commented 2 months ago

Unity: 2021.3.18f1 FishNet: 3.11.18R Pro FishySteamworks: 4.1.0 Discord: https://discord.com/channels/424284635074134018/1248143502253101118

Sometimes we get this exception in build and it's broke gameplay. Log from host.

Server received an unhandled PacketId of 52924 on channel Reliable from connectionId 0. Connection will be kicked immediately.
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
FishNet.Managing.Logging.LevelLoggingConfiguration:LogError(String)
FishNet.Managing.Server.ServerManager:ParseReceived(ServerReceivedDataArgs)
FishNet.Managing.Server.ServerManager:Transport_OnServerReceivedData(ServerReceivedDataArgs)
FishNet.Transporting.Tugboat.Tugboat:HandleServerReceivedDataArgs(ServerReceivedDataArgs)
FishySteamworks.Server.ServerSocket:IterateIncoming()
FishNet.Managing.Transporting.TransportManager:IterateIncoming(Boolean)
FishNet.Managing.Timing.TimeManager:IncreaseTick()
FishNet.Managing.Timing.TimeManager:TickUpdate()

Steam connection not found for connectionId 0.
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
FishySteamworks.FishySteamworks:StopConnection(Int32, Boolean)
FishNet.Managing.Server.ServerManager:Kick(Int32, KickReason, LoggingType, String)
FishNet.Managing.Server.ServerManager:ParseReceived(ServerReceivedDataArgs)
FishNet.Managing.Server.ServerManager:Transport_OnServerReceivedData(ServerReceivedDataArgs)
FishNet.Transporting.Tugboat.Tugboat:HandleServerReceivedDataArgs(ServerReceivedDataArgs)
FishySteamworks.Server.ServerSocket:IterateIncoming()
FishNet.Managing.Transporting.TransportManager:IterateIncoming(Boolean)
FishNet.Managing.Timing.TimeManager:IncreaseTick()
FishNet.Managing.Timing.TimeManager:TickUpdate()

ConnectionId 0 not found within Clients. Connection will be kicked immediately.
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
FishNet.Managing.Logging.LevelLoggingConfiguration:LogError(String)
FishNet.Managing.Server.ServerManager:Kick(Int32, KickReason, LoggingType, String)
FishNet.Managing.Server.ServerManager:ParseReceived(ServerReceivedDataArgs)
FishNet.Managing.Server.ServerManager:Transport_OnServerReceivedData(ServerReceivedDataArgs)
FishNet.Transporting.Tugboat.Tugboat:HandleServerReceivedDataArgs(ServerReceivedDataArgs)
FishySteamworks.Server.ServerSocket:IterateIncoming()
FishNet.Managing.Transporting.TransportManager:IterateIncoming(Boolean)
FishNet.Managing.Timing.TimeManager:IncreaseTick()
FishNet.Managing.Timing.TimeManager:TickUpdate()

Uploading Crash Report
InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.Collections.Generic.Dictionary`2+Enumerator[TKey,TValue].MoveNext () [0x00000] in <00000000000000000000000000000000>:0 
  at FishySteamworks.Server.ServerSocket.IterateIncoming () [0x00000] in <00000000000000000000000000000000>:0 
  at FishNet.Managing.Transporting.TransportManager.IterateIncoming (System.Boolean server) [0x00000] in <00000000000000000000000000000000>:0 
  at FishNet.Managing.Timing.TimeManager.IncreaseTick () [0x00000] in <00000000000000000000000000000000>:0 
  at FishNet.Managing.Timing.TimeManager.TickUpdate () [0x00000] in <00000000000000000000000000000000>:0 

In similar places in FizzySteamworks, connections are copied to avoid this error.

image
FirstGearGames commented 1 week ago

Thought I had replied to this awhile ago. This will get looked at as a priority given it's potential breaking capabilities.