Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent carryalls delivering non-existent units. #16743

Merged
merged 2 commits into from Jul 11, 2019

Conversation

@tovl
Copy link
Contributor

commented Jun 30, 2019

(Hopefully) fixes #16742.

The problem seems to be that the AutoCarryall queues a DeliverUnit activity and does not cancel it when it is not longer valid. This adds a check to DeliverUnit to cancel in that case.

@pchote pchote added this to the Next Release milestone Jun 30, 2019

@tovl tovl force-pushed the tovl:fix-d2k-crash branch from f14091a to af407a1 Jul 7, 2019

@tovl

This comment has been minimized.

Copy link
Contributor Author

commented Jul 7, 2019

Applied fix-ups.

@teinarss

This comment has been minimized.

Copy link
Contributor

commented Jul 7, 2019

Found another bug in the carry all code. This crash happend after ~13 min on the shellmap.

System.InvalidOperationException
  HResult=0x80131509
  Message=Attempted to get trait from destroyed object (harvester 33 (not in world))
  Source=OpenRA.Game
  StackTrace:
   at OpenRA.TraitDictionary.CheckDestroyed(Actor actor) in C:\projects\OpenRa1\OpenRA.Game\TraitDictionary.cs:line 84
   at OpenRA.TraitDictionary.WithInterface[T](Actor actor) in C:\projects\OpenRa1\OpenRA.Game\TraitDictionary.cs:line 100
   at OpenRA.Actor.TraitsImplementing[T]() in C:\projects\OpenRa1\OpenRA.Game\Actor.cs:line 271
   at OpenRA.World.Remove(Actor a) in C:\projects\OpenRa1\OpenRA.Game\World.cs:line 322
   at OpenRA.Mods.Common.Activities.PickupUnit.<>c__DisplayClass13_0.<Attach>b__0(World w) in C:\projects\OpenRa1\OpenRA.Mods.Common\Activities\PickupUnit.cs:line 117
   at OpenRA.World.Tick() in C:\projects\OpenRa1\OpenRA.Game\World.cs:line 429
   at OpenRA.Game.InnerLogicTick(OrderManager orderManager) in C:\projects\OpenRa1\OpenRA.Game\Game.cs:line 610
   at OpenRA.Game.LogicTick() in C:\projects\OpenRa1\OpenRA.Game\Game.cs:line 637
   at OpenRA.Game.Loop() in C:\projects\OpenRa1\OpenRA.Game\Game.cs:line 779
   at OpenRA.Game.Run() in C:\projects\OpenRa1\OpenRA.Game\Game.cs:line 819
   at OpenRA.Game.InitializeAndRun(String[] args) in C:\projects\OpenRa1\OpenRA.Game\Game.cs:line 261
   at OpenRA.Program.Main(String[] args) in C:\projects\OpenRa1\OpenRA.Game\Support\Program.cs:line 31
@tovl

This comment has been minimized.

Copy link
Contributor Author

commented Jul 7, 2019

It seems to be the same problem with pickups. Hopefully fixed now.

@tovl tovl force-pushed the tovl:fix-d2k-crash branch from 7421429 to da3246c Jul 7, 2019

@teinarss
Copy link
Contributor

left a comment

Let it run over an hour now without any problems!

@abcdefg30 abcdefg30 merged commit 71a1060 into OpenRA:bleed Jul 11, 2019

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@abcdefg30

This comment has been minimized.

Copy link
Member

commented Jul 11, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.