View Issue Details

IDProjectCategoryLast Update
0024136AI War 2Crash/ExceptionNov 18, 2020 2:05 pm
ReporterDaniexpert Assigned ToChris_McElligottPark  
Status resolvedResolutionfixed 
Product Version2.633 Roaring Performance 
Fixed in Version2.634 Multiplayer Solidification 
Summary0024136: GameEntity_Squad deserialization
DescriptionGame with a shared player factions.

11/18/2020 1:46:46 PM GameEntity_Squad deserialization error at stage 18000 from serialized version 2.633 loading into new version 2.633, error: System.ArgumentNullException: Value cannot be null.
Parameter name: key
  at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x00008] in <1f0c1ef1ad524c38bbc5536809c46b48>:0
  at System.Collections.Generic.Dictionary`2[TKey,TValue].ContainsKey (TKey key) [0x00000] in <1f0c1ef1ad524c38bbc5536809c46b48>:0
  at Arcen.Universal.ArcenSparseLookup`2[K,T].SetItemForKey (K Key, T Item) [0x00001] in <0984cac507d34c9fb67df62ee6c2392e>:0
  at Arcen.Universal.ArcenSparseLookup`2[K,T].set_Item (K key, T value) [0x00001] in <0984cac507d34c9fb67df62ee6c2392e>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DeserializedIntoSelf (System.Int32 primaryKeyID, Arcen.AIW2.Core.GameEntityTypeData typeData, Arcen.AIW2.Core.Planet Planet, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean HideErrors, System.Boolean IsLoadingTemplate, System.Boolean IsForNetworkSync) [0x00b0e] in <b42976faceae4d8a913bb09053c5fbfc>:0
TagsNo tags attached.

Activities

Daniexpert

Nov 18, 2020 1:07 pm

manager  

exception_GameEntity_Squad deserialization.txt (1,093 bytes)   
11/18/2020 1:46:46 PM	GameEntity_Squad deserialization error at stage 18000 from serialized version 2.633 loading into new version 2.633, error: System.ArgumentNullException: Value cannot be null.
Parameter name: key
  at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x00008] in <1f0c1ef1ad524c38bbc5536809c46b48>:0 
  at System.Collections.Generic.Dictionary`2[TKey,TValue].ContainsKey (TKey key) [0x00000] in <1f0c1ef1ad524c38bbc5536809c46b48>:0 
  at Arcen.Universal.ArcenSparseLookup`2[K,T].SetItemForKey (K Key, T Item) [0x00001] in <0984cac507d34c9fb67df62ee6c2392e>:0 
  at Arcen.Universal.ArcenSparseLookup`2[K,T].set_Item (K key, T value) [0x00001] in <0984cac507d34c9fb67df62ee6c2392e>:0 
  at Arcen.AIW2.Core.GameEntity_Squad.DeserializedIntoSelf (System.Int32 primaryKeyID, Arcen.AIW2.Core.GameEntityTypeData typeData, Arcen.AIW2.Core.Planet Planet, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean HideErrors, System.Boolean IsLoadingTemplate, System.Boolean IsForNetworkSync) [0x00b0e] in <b42976faceae4d8a913bb09053c5fbfc>:0 

Daniexpert

Nov 18, 2020 1:10 pm

manager   ~0059640

Immediately after, in the log, there's this one. Posting in here in case they are somehow linked together.

11/18/2020 1:46:46 PM Client_AcceptDivergenceDataFromHost: Error in faction index sent: -1
11/18/2020 1:46:46 PM Client_AcceptDivergenceDataFromHost: Null planet found at index: -1
11/18/2020 1:46:46 PM Exception in Client_AcceptDivergenceDataFromHost-DivergencesSection: debugStage: 6200 Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at AIWar2NetworkSync.Client_AcceptDivergenceDataFromHost (Arcen.Universal.ArcenDeserializationBuffer buffer) [0x00925] in <b42976faceae4d8a913bb09053c5fbfc>:0

Chris_McElligottPark

Nov 18, 2020 1:41 pm

administrator   ~0059645

Thanks!

* When a client is getting sync correction data from a host about entities, there were several cases where it could detect some invalid data, and it would then throw a visible error... but it would also just keep trying to process this now-known-bad data, and thus run into further problems.
** Now it actually stops processing all of the sync fix data from that batch, and logs warnings into the log silently. This way we can go back and find them if need be, and certainly if your log is filling up with these that would be bad. But these will not affect the running of the game (just how rapidly sync correction happens for this specific batch of units), so they are starting their lines with "Not fatal - just a warning" to be extra clear on that.
** There were various errors that would show up after these, previously, that were simply a matter of "hey, bad data was sent, but we tried to parse it anyway, and of course that went about as well as you could expect."

Chris_McElligottPark

Nov 18, 2020 1:51 pm

administrator   ~0059646

Part 2 of that:

* On the host in multiplayer, it now does a last-minute check to see if it's about to send the sort of mangled data for a ship that would cause the client to have to do the sort of toss-out of the entire batch that the clients were doing in the most recent fix. If it finds that it is, then it should now just skip that unit and leave it for a future sync pass.
** At this stage, we can assume that maybe the unit JUST died on the host, and so within 2-4 seconds the client and the host should get synced up properly regarding it. But in an abundance of caution, there's always the chance that actually this unit is still alive, but just was changing planets or something, so let's not tell the client to delete it just yet.
** This sort of scenario should be an edge case, but the idea here is that we make it less likely than the client would have to throw out an entire batch of divergence data, and instead just the one problematic ship will get re-evaluated next cycle and we don't even need any bad log messages about it, etc.

TLDR:

I think that the other error, the one in your main post, is not actually a real error that should happen. The real one was the bad overall data being sent, and the one in the title of the post was just a secondary effect of that.

If you have a series of errors in your log, definitely posting all of them, in order (unless they are just repeats of one another) is useful in a batch. Really often in various circumstances, there's one real error and then a bunch of spurious ones later that were caused by the first one.

Thanks!

Daniexpert

Nov 18, 2020 1:52 pm

manager   ~0059648

I'm trying to do that exactly while removing the duplicates (tons of them), but definitely not an easy task :P

Chris_McElligottPark

Nov 18, 2020 2:05 pm

administrator   ~0059651

I do appreciate it! And I do appreciate you breaking out the reports into individual tickets, too, even if knowing the context is also useful. It helps me to not miss anything.

Issue History

Date Modified Username Field Change
Nov 18, 2020 1:07 pm Daniexpert New Issue
Nov 18, 2020 1:07 pm Daniexpert File Added: exception_GameEntity_Squad deserialization.txt
Nov 18, 2020 1:10 pm Daniexpert Note Added: 0059640
Nov 18, 2020 1:11 pm Daniexpert Description Updated
Nov 18, 2020 1:41 pm Chris_McElligottPark Note Added: 0059645
Nov 18, 2020 1:51 pm Chris_McElligottPark Assigned To => Chris_McElligottPark
Nov 18, 2020 1:51 pm Chris_McElligottPark Status new => resolved
Nov 18, 2020 1:51 pm Chris_McElligottPark Resolution open => fixed
Nov 18, 2020 1:51 pm Chris_McElligottPark Fixed in Version => 2.634 Multiplayer Solidification
Nov 18, 2020 1:51 pm Chris_McElligottPark Note Added: 0059646
Nov 18, 2020 1:52 pm Daniexpert Note Added: 0059648
Nov 18, 2020 2:05 pm Chris_McElligottPark Note Added: 0059651