stackcollision / Nebulous-BugReporting

Issue-only repository for reporting bugs in NEBULOUS: Fleet Command
4 stars 0 forks source link

Game 33: Red text on merging 3 TFs - System.ArgumentException at Conquest.UI.FleetList.TacsitGroupItem.SortMembers #696

Closed ignifluous closed 2 months ago

ignifluous commented 2 months ago

Describe the bug When merging fleets at Shuji (Ekota IV-C), the following NRE was produced. The resulting TF One One showed with several missing, "(30/0)" ships - after relogging, correct number of (42/1) returned along with missing ships.

Log Excerpt:

Exception System.ArgumentException: Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: 'Conquest.UI.FleetList.TacsitGroupItem+ShipItemComparer'.
  at System.Collections.Generic.IntrospectiveSortUtilities.ThrowOrIgnoreBadComparer (System.Object comparer) [0x0000b] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Collections.Generic.IComparer`1[T] comparer) [0x00022] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at System.Array.Sort[T] (T[] array, System.Int32 index, System.Int32 length, System.Collections.Generic.IComparer`1[T] comparer) [0x00048] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at System.Collections.Generic.List`1[T].Sort (System.Int32 index, System.Int32 count, System.Collections.Generic.IComparer`1[T] comparer) [0x0002a] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at System.Collections.Generic.List`1[T].Sort (System.Collections.Generic.IComparer`1[T] comparer) [0x00008] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at Conquest.UI.FleetList.TacsitGroupItem.SortMembers () [0x00001] in D:\Projects\Unity\Nebulous Conquest\Assets\Source\Conquest\UI\FleetList\TacsitGroupItem.cs:124 
  at Conquest.UI.FleetList.TacsitGroupItem.HandleShipAdded (Conquest.Units.ShipUnit ship) [0x00009] in D:\Projects\Unity\Nebulous Conquest\Assets\Source\Conquest\UI\FleetList\TacsitGroupItem.cs:92 
  at Conquest.Units.ShipGroup.HandleMemberListChanged (Mirror.SyncList`1+Operation[T] op, System.Int32 itemIndex, Conquest.Units.ShipUnit oldItem, Conquest.Units.ShipUnit newItem) [0x0002c] in D:\Projects\Unity\Nebulous Conquest\Assets\Source\Conquest\Units\ShipGroup.cs:969 
  at Networking.NetBehaviourSyncList`1[TScript].HandleChanges (Mirror.SyncList`1+Operation[T] op, System.Int32 itemIndex, Networking.NetScriptAddress oldItem, Networking.NetScriptAddress newItem) [0x000f7] in D:\Projects\Unity\Nebulous Conquest\Assets\Source\Networking\NetBehaviourSyncList.cs:90 
  at Mirror.SyncList`1[T].OnDeserializeDelta (Mirror.NetworkReader reader) [0x0014b] in D:\Projects\Unity\Nebulous Conquest\Assets\Mirror\Runtime\SyncList.cs:236 
  at Networking.NetBehaviourSyncList`1[TScript].OnDeserializeDelta (Mirror.NetworkReader reader) [0x00000] in D:\Projects\Unity\Nebulous Conquest\Assets\Source\Networking\NetBehaviourSyncList.cs:38 
  at Mirror.NetworkBehaviour.DeSerializeObjectsDelta (Mirror.NetworkReader reader) [0x0002c] in D:\Projects\Unity\Nebulous Conquest\Assets\Mirror\Runtime\NetworkBehaviour.cs:681 
  at Mirror.NetworkBehaviour.OnDeserialize (Mirror.NetworkReader reader, System.Boolean initialState) [0x00013] in D:\Projects\Unity\Nebulous Conquest\Assets\Mirror\Runtime\NetworkBehaviour.cs:600 
  at Mirror.NetworkIdentity.OnDeserializeSafely (Mirror.NetworkBehaviour comp, Mirror.NetworkReader reader, System.Boolean initialState) [0x00019] in D:\Projects\Unity\Nebulous Conquest\Assets\Mirror\Runtime\NetworkIdentity.cs:992 
UnityEngine.StackTraceUtility:ExtractStackTrace () (at C:/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
UnityEngine.Logger:Log (UnityEngine.LogType,object)
UnityEngine.Debug:LogError (object)
Mirror.NetworkIdentity:OnDeserializeSafely (Mirror.NetworkBehaviour,Mirror.NetworkReader,bool) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs:997)
Mirror.NetworkIdentity:OnDeserializeAllSafely (Mirror.NetworkReader,bool) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs:1038)
Mirror.NetworkClient:OnEntityStateMessage (Mirror.EntityStateMessage) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:1253)
Mirror.NetworkClient/<>c__DisplayClass46_0`1<Mirror.EntityStateMessage>:<RegisterHandler>g__HandlerWrapped|0 (Mirror.NetworkConnection,Mirror.EntityStateMessage) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:454)
Mirror.MessagePacking/<>c__DisplayClass6_0`2<Mirror.EntityStateMessage, Mirror.NetworkConnection>:<WrapHandler>b__0 (Mirror.NetworkConnection,Mirror.NetworkReader,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/MessagePacking.cs:118)
Mirror.NetworkClient:UnpackAndInvoke (Mirror.NetworkReader,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:274)
Mirror.NetworkClient:OnTransportData (System.ArraySegment`1<byte>,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:342)
Mirror.FizzySteam.NextClient/<>c__DisplayClass26_0:<CreateClient>b__2 (byte[],int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:41)
Mirror.FizzySteam.NextClient:OnMessageReceived (intptr,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:115)
FizzyConnectionManager:OnMessage (intptr,int,long,long,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/FizzyConnectionManager.cs:10)
Steamworks.ConnectionManager:ReceiveMessage (intptr)
Steamworks.ConnectionManager:Receive (int)
Mirror.FizzySteam.NextClient:ReceiveData () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:175)
Mirror.FizzySteam.FizzyFacepunch:ClientEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/FizzyFacepunch.cs:59)
Mirror.NetworkClient:NetworkEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:1345)
Mirror.NetworkLoop:NetworkEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkLoop.cs:186)

(Filename: D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs Line: 997)

OnDeserialize was expected to read 232 instead of 124 bytes for object:Group - One One component=Conquest.Units.ShipGroup sceneId=0. Make sure that OnSerialize and OnDeserialize write/read the same amount of data in all cases.
UnityEngine.StackTraceUtility:ExtractStackTrace () (at C:/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
UnityEngine.Logger:Log (UnityEngine.LogType,object)
UnityEngine.Debug:LogWarning (object)
Mirror.NetworkIdentity:OnDeserializeSafely (Mirror.NetworkBehaviour,Mirror.NetworkReader,bool) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs:1011)
Mirror.NetworkIdentity:OnDeserializeAllSafely (Mirror.NetworkReader,bool) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs:1038)
Mirror.NetworkClient:OnEntityStateMessage (Mirror.EntityStateMessage) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:1253)
Mirror.NetworkClient/<>c__DisplayClass46_0`1<Mirror.EntityStateMessage>:<RegisterHandler>g__HandlerWrapped|0 (Mirror.NetworkConnection,Mirror.EntityStateMessage) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:454)
Mirror.MessagePacking/<>c__DisplayClass6_0`2<Mirror.EntityStateMessage, Mirror.NetworkConnection>:<WrapHandler>b__0 (Mirror.NetworkConnection,Mirror.NetworkReader,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/MessagePacking.cs:118)
Mirror.NetworkClient:UnpackAndInvoke (Mirror.NetworkReader,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:274)
Mirror.NetworkClient:OnTransportData (System.ArraySegment`1<byte>,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:342)
Mirror.FizzySteam.NextClient/<>c__DisplayClass26_0:<CreateClient>b__2 (byte[],int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:41)
Mirror.FizzySteam.NextClient:OnMessageReceived (intptr,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:115)
FizzyConnectionManager:OnMessage (intptr,int,long,long,int) (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/FizzyConnectionManager.cs:10)
Steamworks.ConnectionManager:ReceiveMessage (intptr)
Steamworks.ConnectionManager:Receive (int)
Mirror.FizzySteam.NextClient:ReceiveData () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/NextClient.cs:175)
Mirror.FizzySteam.FizzyFacepunch:ClientEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/Transport/FizzyFacepunch/FizzyFacepunch.cs:59)
Mirror.NetworkClient:NetworkEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkClient.cs:1345)
Mirror.NetworkLoop:NetworkEarlyUpdate () (at D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkLoop.cs:186)

(Filename: D:/Projects/Unity/Nebulous Conquest/Assets/Mirror/Runtime/NetworkIdentity.cs Line: 1011)

To Reproduce With three fleets present at Shoji...

  1. Shift-selected two of the fleets on the TacMap (I don't recall precisely, but likely TF Nine and TF One Zero)
  2. Right-clicked TF One One
  3. Selected to join the TFs
  4. See error

Expected behavior TFs should have joined with no error, and all ships shown on TACSIT.

Attachments Attach any screenshots, logs, fleet files, etc that may help. Save: Thursday_Game_33_Turn_2_Tasking_Phase.zip

Full log: 2024-05-24-fleetmerge.log