View Issue Details
ID | Project | Category | Date Submitted | Last Update | |
---|---|---|---|---|---|
0024136 | AI War 2 | Crash/Exception | Nov 18, 2020 1:07 pm | Nov 18, 2020 2:05 pm | |
Reporter | Daniexpert | Assigned To | Chris_McElligottPark | ||
Status | resolved | Resolution | fixed | ||
Product Version | 2.633 Roaring Performance | ||||
Fixed in Version | 2.634 Multiplayer Solidification | ||||
Summary | 0024136: GameEntity_Squad deserialization | ||||
Description | Game 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 | ||||
Tags | No tags attached. | ||||
|
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 |
|
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 |
|
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." |
|
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! |
|
I'm trying to do that exactly while removing the duplicates (tons of them), but definitely not an easy task :P |
|
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. |
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 |