View Issue Details
ID | Project | Category | Date Submitted | Last Update | |
---|---|---|---|---|---|
0025638 | AI War 2 | Crash/Exception | Oct 14, 2021 10:18 pm | Oct 15, 2021 10:41 am | |
Reporter | BadgerBadger | Assigned To | Chris_McElligottPark | ||
Status | resolved | Resolution | fixed | ||
Product Version | Beta 3.709 Upgrades And Serialization Fix | ||||
Fixed in Version | Beta 3.710 Hotfixes Serialization and Performance | ||||
Summary | 0025638: Death registry problem | ||||
Description | I 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 | ||||
Tags | No tags attached. | ||||
|
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 |
|
Ugh. I had meant to check for this... |
|
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. |
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 |