View Issue Details

IDProjectCategoryLast Update
0025638AI War 2Crash/ExceptionOct 15, 2021 10:41 am
ReporterBadgerBadger Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Product VersionBeta 3.709 Upgrades And Serialization Fix 
Fixed in VersionBeta 3.710 Hotfixes Serialization and Performance 
Summary0025638: Death registry problem
DescriptionI was playing a quick test game and hit this about 10 minutes in:
10/14/2021 8:17:37 PM 3.709 SINGLEP 2334 Tried to create an entity that was already in the death registry! TackleDroneLauncherFrigate. Corrected to a fresh ID for now, but calling code should also be corrected to not do this. ID reuse that hits the death registry, even for transformation of units, leads to sim confusion. Either fix it to not go in the death registry, or fix the calling code to not reuse the ID. Original squad removal reason was: GettingIntoTransport
  at System.Environment.get_StackTrace () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at Arcen.Universal.ArcenDebugging.ArcenLog_InnerOnMainThreadOnly (System.String Message, Arcen.Universal.DebugLogDestination Destination, System.Boolean IncludeStackTrace, Arcen.Universal.Verbosity Verbosity, System.DateTime Timestamp) [0x00197] in /home/arcengames_aiw-ultra/CodeCrossProject/ArcenUniversal/src/UtilityLibraries/ArcenDebugging.cs:398
  at Arcen.Universal.ArcenDebugging.ArcenDebugLog (System.String Message, Arcen.Universal.Verbosity Verbosity) [0x00038] in /home/arcengames_aiw-ultra/CodeCrossProject/ArcenUniversal/src/UtilityLibraries/ArcenDebugging.cs:262
  at Arcen.AIW2.Core.GameEntity_Squad.CreateNew_ReturnNullIfMPClient (System.Int32 ExistingPrimaryKeyID, Arcen.AIW2.Core.PlanetFaction PFaction, Arcen.AIW2.Core.GameEntityTypeData TypeData, System.Byte CurrentMarkLevel, Arcen.AIW2.Core.Fleet FleetOrNullIfNotShip, System.Int32 UniqueTypeDataDifferentiatorForDuplicatesOrZero, Arcen.Universal.ArcenPoint StartingLocation, Arcen.AIW2.Core.ArcenHostOnlySimContext Context) [0x00084] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/GameState/GameEntity/GameEntity_Squad.cs:519
  at Arcen.AIW2.Core.TransportedShip.CreateGameEntity_SquadFromMe_OrNull (Arcen.AIW2.Core.GameEntity_Squad TransportShip, Arcen.AIW2.Core.FleetMembership TransportShipMembership, Arcen.AIW2.Core.ArcenHostOnlySimContext Context) [0x0002c] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/GameState/GameEntity/TransportedShip.cs:232
  at Arcen.AIW2.External.GameCommand_UnloadTransports+<Execute>c__AnonStorey0.<>m__0 (Arcen.AIW2.Core.FleetMembership fleetMember) [0x00000] in <700d1fdeb34641e089b71f554f869920>:0
  at Arcen.AIW2.Core.Fleet.DoForMemberGroupsUnsorted_Sim (Arcen.AIW2.Core.FleetMembership+ProcessorDelegate Processor) [0x0002e] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/GameState/GameEntity/Fleet.cs:3170
  at Arcen.AIW2.External.GameCommand_UnloadTransports.Execute (Arcen.AIW2.Core.GameCommand command, Arcen.AIW2.Core.ArcenClientOrHostSimContextCore context) [0x00000] in <700d1fdeb34641e089b71f554f869920>:0
  at Arcen.AIW2.Core.GameCommand.Execute (Arcen.AIW2.Core.ArcenClientOrHostSimContextCore Context) [0x00061] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/Networking/GameCommand.cs:408
  at Arcen.AIW2.Core.World_AIW2.OnClient_ExecuteGameCommandsReceivedFromServer (Arcen.AIW2.Core.ArcenClientOrHostSimContextCore Context) [0x000d1] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/GameState/World_AIW2.cs:3661
  at Arcen.AIW2.External.SimPlannerImplementation.ProcessCoreLogicForArbitraryFrameOnMainThread (System.Boolean& stalledWaitingOnConnections, System.Boolean& mayUpdateVisuals, System.String& reasonForNoVisualUpdates) [0x00000] in <700d1fdeb34641e089b71f554f869920>:0
  at Arcen.AIW2.Core.Engine_AIW2.ProcessArbitraryFrameOnMainThread (System.Boolean& stalledWaitingOnConnections, System.String& reasonForNoVisualUpdates) [0x001b2] in /home/arcengames_aiw-ultra/CodeMain/ArcenAIW2Core/src/Logic/Engine_AIW2.cs:1423
TagsNo tags attached.

Activities

Daniexpert

Oct 15, 2021 6:50 am

manager   ~0062939

Getting pretty much the same one. It gets to be pretty spammy in the log.
deathRegistry.txt (3,456 bytes)   
10/15/2021 12:46:10 PM  3.709 SINGLEP 2797 Tried to create an entity that was already in the death registry! ClusterBomb.  Corrected to a fresh ID for now, but calling code should also be corrected to not do this.  ID reuse that hits the death registry, even for transformation of units, leads to sim confusion.  Either fix it to not go in the death registry, or fix the calling code to not reuse the ID.  Original squad removal reason was: GettingIntoTransport
  at System.Environment.get_StackTrace () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0 
  at Arcen.Universal.ArcenDebugging.ArcenLog_InnerOnMainThreadOnly (System.String Message, Arcen.Universal.DebugLogDestination Destination, System.Boolean IncludeStackTrace, Arcen.Universal.Verbosity Verbosity, System.DateTime Timestamp) [0x00000] in <e06e57cb32c54499a0e637a756a639a7>:0 
  at Arcen.Universal.ArcenDebugging.ArcenDebugLog (System.String Message, Arcen.Universal.Verbosity Verbosity) [0x00000] in <e06e57cb32c54499a0e637a756a639a7>:0 
  at Arcen.AIW2.Core.GameEntity_Squad.CreateNew_ReturnNullIfMPClient (System.Int32 ExistingPrimaryKeyID, Arcen.AIW2.Core.PlanetFaction PFaction, Arcen.AIW2.Core.GameEntityTypeData TypeData, System.Byte CurrentMarkLevel, Arcen.AIW2.Core.Fleet FleetOrNullIfNotShip, System.Int32 UniqueTypeDataDifferentiatorForDuplicatesOrZero, Arcen.Universal.ArcenPoint StartingLocation, Arcen.AIW2.Core.ArcenHostOnlySimContext Context) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.AIW2.Core.TransportedShip.CreateGameEntity_SquadFromMe_OrNull (Arcen.AIW2.Core.GameEntity_Squad TransportShip, Arcen.AIW2.Core.FleetMembership TransportShipMembership, Arcen.AIW2.Core.ArcenHostOnlySimContext Context) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.AIW2.External.GameCommand_UnloadTransports+<>c__DisplayClass0_1.<Execute>b__0 (Arcen.AIW2.Core.FleetMembership fleetMember) [0x00000] in <cc586a47a9404ef6a72c230e971f279f>:0 
  at Arcen.AIW2.Core.Fleet.DoForMemberGroupsUnsorted_Sim (Arcen.AIW2.Core.FleetMembership+ProcessorDelegate Processor) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.AIW2.External.GameCommand_UnloadTransports.Execute (Arcen.AIW2.Core.GameCommand command, Arcen.AIW2.Core.ArcenClientOrHostSimContextCore context) [0x00000] in <cc586a47a9404ef6a72c230e971f279f>:0 
  at Arcen.AIW2.Core.GameCommand.Execute (Arcen.AIW2.Core.ArcenClientOrHostSimContextCore Context) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.AIW2.Core.World_AIW2.OnClient_ExecuteGameCommandsReceivedFromServer (Arcen.AIW2.Core.ArcenClientOrHostSimContextCore Context) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.AIW2.External.SimPlannerImplementation.ProcessCoreLogicForArbitraryFrameOnMainThread (System.Boolean& stalledWaitingOnConnections, System.Boolean& mayUpdateVisuals, System.String& reasonForNoVisualUpdates) [0x00000] in <cc586a47a9404ef6a72c230e971f279f>:0 
  at Arcen.AIW2.Core.Engine_AIW2.ProcessArbitraryFrameOnMainThread (System.Boolean& stalledWaitingOnConnections, System.String& reasonForNoVisualUpdates) [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at Arcen.Universal.Engine_Universal.OnUpdateFromMainThread () [0x00000] in <e06e57cb32c54499a0e637a756a639a7>:0 
  at Arcen.AIW2.Core.ArcenGameControllerBase.BaseUpdate () [0x00000] in <81e7d88b38724d858317997ef6dc3cc8>:0 
  at ArcenGameController.Update () [0x00000] in <a6cba12c7f0b4f47a1ff69cb43a03552>:0 
deathRegistry.txt (3,456 bytes)   

Chris_McElligottPark

Oct 15, 2021 9:58 am

administrator   ~0062944

Ugh. I had meant to check for this...

Chris_McElligottPark

Oct 15, 2021 10:41 am

administrator   ~0062945

Thanks!

* Added a new and more efficient method for TryRemove on ConcurrentDictionary that allows for multiple tries at once, and doesn't force you to take an out value.
** If you only want it to try once, just pass in any number less than 2.

* The death registry now supports resurrections, heh. Units that are put into a transport are considered "dead," but when they are brought back out they are now considered brought back to life as their same self.
** This fixes an error in the death registry code that would happen around transports, which I had anticipated yesterday and then got sidetracked into all that drone business and didn't actually test it.

* In preparation for getting MP working again on the beta, the game now fast-blasts death registry data to the clients.
** This includes removals and additions to the death registry, and slots them into the fast-blast order in the appropriate spot where we won't get death registry warnings.
** For units being killed, this also proactively kills them on the client in the same way they died on the host, which is quite handy.

Issue History

Date Modified Username Field Change
Oct 14, 2021 10:18 pm BadgerBadger New Issue
Oct 14, 2021 10:18 pm BadgerBadger Status new => assigned
Oct 14, 2021 10:18 pm BadgerBadger Assigned To => Chris_McElligottPark
Oct 15, 2021 6:50 am Daniexpert Note Added: 0062939
Oct 15, 2021 6:50 am Daniexpert File Added: deathRegistry.txt
Oct 15, 2021 9:58 am Chris_McElligottPark Note Added: 0062944
Oct 15, 2021 10:41 am Chris_McElligottPark Status assigned => resolved
Oct 15, 2021 10:41 am Chris_McElligottPark Resolution open => fixed
Oct 15, 2021 10:41 am Chris_McElligottPark Fixed in Version => Beta 3.710 Hotfixes Serialization and Performance
Oct 15, 2021 10:41 am Chris_McElligottPark Note Added: 0062945