4.3.84 - Cascading burst errors when units spawned on top of/very close each other

Hey Aron, I have unit A and Unit B. Unit A has RVO but not unit B. Both units do not have gravity enabled. I have two graphs but both units use only one traversable graph. If I spawn a bunch of units A in an area and then unit B in the same area, it causes the usual nonsense ‘dependency not set’ and ‘invalid AABB’ burst errors when it detects a possible race condition. (The first error AIMoveSystem but obvs may not be where the problem is)

The errors are not thrown in 4.3.82 (errors still thrown in 4.3.83)

Turning gravity on for both units does not throw the errors but units randomly don’t clamp to the traversable graph and fall through the floor.

Hi

Which movement scripts are you using?
Which exact errors does it log?

Went back to 4.3.84. Confirmed this only happens when gravity is explicitly turned off on the Follower Entity. I am using recast graphs.

The system Pathfinding.ECS.AIMoveSystem reads Pathfinding.ECS.MovementSettings via JobMoveAgent but that type was not assigned to the Dependency property. To ensure correct behavior of other systems, the job or a dependency must be assigned to the Dependency property before returning from the OnUpdate method.
UnityEngine.Debug:LogError (object)
Unity.Debug:LogError (object) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Stubs/Unity/Debug.cs:13)
Unity.Entities.SystemState:LogSafetyDetails (Unity.Entities.SystemDependencySafetyUtility/SafetyErrorDetails&,bool&) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemState.cs:637)
Unity.Entities.SystemState:LogSafetyErrors () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemState.cs:625)
Unity.Entities.EntityManager/<>c:<Initialize>b__40_0 () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/EntityManager.cs:277)
Unity.Jobs.LowLevel.Unsafe.JobsUtility:InvokePanicFunction ()
Unity.Jobs.LowLevel.Unsafe.JobsUtility:ScheduleParallelFor (Unity.Jobs.LowLevel.Unsafe.JobsUtility/JobScheduleParameters&,int,int)
Unity.Entities.JobChunkExtensions:ScheduleInternal<Pathfinding.ECS.JobPrepareAgentRaycasts> (Pathfinding.ECS.JobPrepareAgentRaycasts&,Unity.Entities.EntityQuery,Unity.Jobs.JobHandle,Unity.Jobs.LowLevel.Unsafe.ScheduleMode,Unity.Collections.NativeArray`1<int>) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/IJobChunk.cs:331)
Unity.Entities.Internal.InternalCompilerInterface/JobChunkInterface:ScheduleParallelByRef<Pathfinding.ECS.JobPrepareAgentRaycasts> (Pathfinding.ECS.JobPrepareAgentRaycasts&,Unity.Entities.EntityQuery,Unity.Jobs.JobHandle,Unity.Collections.NativeArray`1<int>) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Internal/InternalCompilerInterface.cs:315)
Pathfinding.ECS.AIMoveSystem:__ScheduleViaJobChunkExtension_2 (Pathfinding.ECS.JobPrepareAgentRaycasts,Unity.Entities.EntityQuery,Unity.Jobs.JobHandle,Unity.Entities.SystemState&,bool) (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMoveSystem.cs:295)
Pathfinding.ECS.AIMoveSystem:OnUpdate (Unity.Entities.SystemState&) (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMoveSystem.cs:151)
Pathfinding.ECS.AIMoveSystem:__codegen__OnUpdate (intptr,intptr)
Unity.Entities.SystemBaseRegistry/<>c__DisplayClass9_0:<SelectBurstFn>b__0 (intptr,intptr) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBaseRegistry.cs:256)
Unity.Entities.WorldUnmanagedImpl/Unity.Entities.UnmanagedUpdate_00001591$BurstDirectCall:Invoke (void*)
Unity.Entities.WorldUnmanagedImpl:UnmanagedUpdate (void*) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:828)
Unity.Entities.WorldUnmanagedImpl:UpdateSystem (Unity.Entities.SystemHandle) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:894)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:733)
Unity.Entities.ComponentSystemGroup:OnUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:703)
Pathfinding.ECS.AIMovementSystemGroup:OnUpdate () (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMovementSystemGroup.cs:160)
Unity.Entities.SystemBase:Update () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:739)
Unity.Entities.ComponentSystemGroup:OnUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:697)
Unity.Entities.SystemBase:Update () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.ScriptBehaviourUpdateOrder/DummyDelegateWrapper:TriggerUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ScriptBehaviourUpdateOrder.cs:526)

InvalidOperationException: The previously scheduled job JobMoveAgent writes to the ComponentTypeHandle<Unity.Transforms.LocalTransform> JobMoveAgent.JobData.__TypeHandle.__Unity_Transforms_LocalTransform_RW_ComponentTypeHandle. You are trying to schedule a new job JobPrepareAgentRaycasts, which writes to the same ComponentTypeHandle<Unity.Transforms.LocalTransform> (via JobPrepareAgentRaycasts.JobData.__TypeHandle.__Unity_Transforms_LocalTransform_RW_ComponentTypeHandle). To guarantee safety, you must include JobMoveAgent as a dependency of the newly scheduled job.
Unity.Jobs.LowLevel.Unsafe.JobsUtility.ScheduleParallelFor (Unity.Jobs.LowLevel.Unsafe.JobsUtility+JobScheduleParameters& parameters, System.Int32 arrayLength, System.Int32 innerloopBatchCount) (at <56073df97ede4f769c2cc45d546d986d>:0)
Unity.Entities.JobChunkExtensions.ScheduleInternal[T] (T& jobData, Unity.Entities.EntityQuery query, Unity.Jobs.JobHandle dependsOn, Unity.Jobs.LowLevel.Unsafe.ScheduleMode mode, Unity.Collections.NativeArray`1[T] chunkBaseEntityIndices) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/IJobChunk.cs:331)
Unity.Entities.Internal.InternalCompilerInterface+JobChunkInterface.ScheduleParallelByRef[T] (T& jobData, Unity.Entities.EntityQuery query, Unity.Jobs.JobHandle dependsOn, Unity.Collections.NativeArray`1[T] chunkBaseEntityIndices) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Internal/InternalCompilerInterface.cs:315)
Pathfinding.ECS.AIMoveSystem.__ScheduleViaJobChunkExtension_2 (Pathfinding.ECS.JobPrepareAgentRaycasts job, Unity.Entities.EntityQuery query, Unity.Jobs.JobHandle dependency, Unity.Entities.SystemState& state, System.Boolean hasUserDefinedQuery) (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMoveSystem.cs:295)
Pathfinding.ECS.AIMoveSystem.OnUpdate (Unity.Entities.SystemState& systemState) (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMoveSystem.cs:151)
Pathfinding.ECS.AIMoveSystem.__codegen__OnUpdate (System.IntPtr self, System.IntPtr state) (at <518308f55b1449f297fdc0dd45a99dad>:0)
Unity.Entities.SystemBaseRegistry+<>c__DisplayClass9_0.<SelectBurstFn>b__0 (System.IntPtr system, System.IntPtr state) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBaseRegistry.cs:256)
UnityEngine.Debug:LogException(Exception)
Unity.Debug:LogException(Exception) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Stubs/Unity/Debug.cs:19)
Unity.Entities.<>c__DisplayClass9_0:<SelectBurstFn>b__0(IntPtr, IntPtr) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBaseRegistry.cs:260)
Unity.Entities.UnmanagedUpdate_00001591$BurstDirectCall:wrapper_native_indirect_00000208A1A66B28(IntPtr&, Void*)
Unity.Entities.UnmanagedUpdate_00001591$BurstDirectCall:Invoke(Void*)
Unity.Entities.WorldUnmanagedImpl:UnmanagedUpdate(Void*) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:828)
Unity.Entities.WorldUnmanagedImpl:UpdateSystem(SystemHandle) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:894)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:733)
Unity.Entities.ComponentSystemGroup:OnUpdate() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:703)
Pathfinding.ECS.AIMovementSystemGroup:OnUpdate() (at ./Library/PackageCache/com.arongranberg.astar@4.3.84/Core/ECS/Systems/AIMovementSystemGroup.cs:160)
Unity.Entities.SystemBase:Update() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:739)
Unity.Entities.ComponentSystemGroup:OnUpdate() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:697)
Unity.Entities.SystemBase:Update() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.DummyDelegateWrapper:TriggerUpdate() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ScriptBehaviourUpdateOrder.cs:526)

InvalidOperationException: The previously scheduled job JobMoveAgent writes to the ComponentTypeHandle<Unity.Transforms.LocalTransform> JobMoveAgent.JobData.__TypeHandle.__Unity_Transforms_LocalTransform_RW_ComponentTypeHandle. You are trying to schedule a new job TransformVelocityCalcJob, which reads from the same ComponentTypeHandle<Unity.Transforms.LocalTransform> (via TransformVelocityCalcJob.JobData.__TypeHandle.__Unity_Transforms_LocalTransform_RO_ComponentTypeHandle). To guarantee safety, you must include JobMoveAgent as a dependency of the newly scheduled job.
Unity.Entities.WorldUnmanagedImpl+UnmanagedUpdate_00001591$BurstDirectCall.Invoke (System.Void* pSystemState) (at <936cfa5750d641e7b71c7948b07cd131>:0)
Unity.Entities.WorldUnmanagedImpl.UnmanagedUpdate (System.Void* pSystemState) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:828)
Unity.Entities.WorldUnmanagedImpl.UpdateSystem (Unity.Entities.SystemHandle sh) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:913)
Unity.Entities.ComponentSystemGroup.UpdateAllSystems () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:733)
UnityEngine.Debug:LogException(Exception)
Unity.Debug:LogException(Exception) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Stubs/Unity/Debug.cs:19)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:744)
Unity.Entities.ComponentSystemGroup:OnUpdate() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:697)
Unity.Entities.SystemBase:Update() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.DummyDelegateWrapper:TriggerUpdate() (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ScriptBehaviourUpdateOrder.cs:526)

The system Pathfinding.ECS.AIMoveSystem writes Unity.Transforms.LocalTransform via JobMoveAgent but that type was not assigned to the Dependency property. To ensure correct behavior of other systems, the job or a dependency must be assigned to the Dependency property before returning from the OnUpdate method.
UnityEngine.Debug:LogError (object)
Unity.Debug:LogError (object) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/Stubs/Unity/Debug.cs:13)
Unity.Entities.SystemState:LogSafetyDetails (Unity.Entities.SystemDependencySafetyUtility/SafetyErrorDetails&,bool&) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemState.cs:637)
Unity.Entities.SystemState:LogSafetyErrors () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemState.cs:625)
Unity.Entities.EntityManager/<>c:<Initialize>b__40_0 () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/EntityManager.cs:277)
Unity.Jobs.LowLevel.Unsafe.JobsUtility:InvokePanicFunction ()
Unity.Entities.WorldUnmanagedImpl/Unity.Entities.UnmanagedUpdate_00001591$BurstDirectCall:Invoke (void*)
Unity.Entities.WorldUnmanagedImpl:UnmanagedUpdate (void*) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:828)
Unity.Entities.WorldUnmanagedImpl:UpdateSystem (Unity.Entities.SystemHandle) (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/WorldUnmanaged.cs:894)
Unity.Entities.ComponentSystemGroup:UpdateAllSystems () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:733)
Unity.Entities.ComponentSystemGroup:OnUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ComponentSystemGroup.cs:697)
Unity.Entities.SystemBase:Update () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/SystemBase.cs:418)
Unity.Entities.ScriptBehaviourUpdateOrder/DummyDelegateWrapper:TriggerUpdate () (at ./Library/PackageCache/com.unity.entities@1.0.16/Unity.Entities/ScriptBehaviourUpdateOrder.cs:526)

Hi

I cannot replicate this, sadly.
Are you sure those are the first error messages you get? You mentioned something about invalid AABBs earlier.

I will try and replicate on a bare minimum scene today and report back.

Yeah I’d get the invalid AABBs (along with a numerous others) if I kept it running - the errors above are the ones that get thrown. Its the generic invalid AABB - expanding error with no other info.

So on a fresh scene I can reliably get the errors thrown by turning off/on gravity in the follower entity on the inspector (not paused).

Gyazo

Gyazo Screen Video

I only have one system that queries for one of your components and I turned it off. No entities of mine were in subscene.

More info: looks like just having units affected by gravity and other units not affected by gravity on the same graph (not even close to each other) to cause the errors

Thanks! That was indeed the issue.

I’ll fix it in the next beta update.

1 Like