When a collision enabled RBAN node attempts to collect surrounding meshes, if there is a mesh with UseComplexAsSimple, it will hit the Ensure when cloning a mesh on the task graph thread.
Disabling "Use Multi Threaded Animation Update" is a work around.
Ensure occurs with a log :
ensure condition failed: IsInGameThreadContext() [File:D:\dev\UnrealEngine-5.0.2\Engine\Source\Runtime\Experimental\Chaos\Public\Framework\Threading.h] [Line: 243]
[Inline Frame] UnrealEditor-Engine.dll!Chaos::EnsureIsInGameThreadContext::__l2::<lambda_f61a178694a0d47aebbc24795f291b87>::operator()() Line 243 C++ [Inline Frame] UnrealEditor-Engine.dll!Chaos::EnsureIsInGameThreadContext() Line 243 C++ UnrealEditor-Engine.dll!Chaos::TThreadedSingleParticlePhysicsProxyBase<1>::VerifyContext() Line 885 C++ [Inline Frame] UnrealEditor-Engine.dll!Chaos::TThreadedSingleParticlePhysicsProxyBase<1>::Read(const Chaos::TThreadedSingleParticlePhysicsProxyBase<1>::Geometry::__l2::<lambda_ca30add81d44aadf87c6dcdd23e0c5c6> &) Line 898 C++ [Inline Frame] UnrealEditor-Engine.dll!Chaos::TThreadedSingleParticlePhysicsProxyBase<1>::Geometry() Line 251 C++ [Inline Frame] UnrealEditor-Engine.dll!ImmediatePhysics_Chaos::CloneGeometry(FBodyInstance *) Line 103 C++ UnrealEditor-Engine.dll!ImmediatePhysics_Chaos::CreateGeometry(FBodyInstance * BodyInstance, ImmediatePhysics_Shared::EActorType ActorType, const UE::Math::TVector<double> & Scale, double & OutMass, Chaos::TVector<double,3> & OutInertia, Chaos::TRigidTransform<double,3> & OutCoMTransform, TUniquePtr<Chaos::FImplicitObject,TDefaultDelete<Chaos::FImplicitObject>> & OutGeom, TArray<TUniquePtr<Chaos::FPerShapeData,TDefaultDelete<Chaos::FPerShapeData>>,TSizedDefaultAllocator<32>> & OutShapes) Line 126 C++ UnrealEditor-Engine.dll!ImmediatePhysics_Chaos::FActorHandle::FActorHandle(Chaos::FPBDRigidsSOAs & InParticles, Chaos::TArrayCollectionArray<Chaos::TVector<double,3>> & InParticlePrevXs, Chaos::TArrayCollectionArray<Chaos::TRotation<double,3>> & InParticlePrevRs, ImmediatePhysics_Shared::EActorType ActorType, FBodyInstance * BodyInstance, const UE::Math::TTransform<double> & InTransform) Line 243 C++ UnrealEditor-Engine.dll!ImmediatePhysics_Chaos::FSimulation::CreateActor(ImmediatePhysics_Shared::EActorType ActorType, FBodyInstance * BodyInstance, const UE::Math::TTransform<double> & Transform) Line 436 C++ UnrealEditor-AnimGraphRuntime.dll!FAnimNode_RigidBody::CollectWorldObjects() Line 1594 C++ UnrealEditor-AnimGraphRuntime.dll!FAnimNode_RigidBody::UpdateInternal(const FAnimationUpdateContext & Context) Line 1551 C++ UnrealEditor-AnimGraphRuntime.dll!FAnimNode_SkeletalControlBase::Update_AnyThread(const FAnimationUpdateContext & Context) Line 76 C++ UnrealEditor-Engine.dll!FPoseLinkBase::Update(const FAnimationUpdateContext & InContext) Line 295 C++ UnrealEditor-Engine.dll!FPoseLinkBase::Update(const FAnimationUpdateContext & InContext) Line 295 C++ UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimationNode_WithRoot(const FAnimationUpdateContext & InContext, FAnimNode_Base * InRootNode, FName InLayerName) Line 69 C++ UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimationNode(const FAnimationUpdateContext & InContext) Line 47 C++ UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimation_WithRoot(const FAnimationUpdateContext & InContext, FAnimNode_Base * InRootNode, FName InLayerName) Line 1152 C++ UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimation() Line 1035 C++ UnrealEditor-Engine.dll!USkeletalMeshComponent::PerformAnimationProcessing(const USkeletalMesh * InSkeletalMesh, UAnimInstance * InAnimInstance, bool bInDoEvaluation, TArray<UE::Math::TTransform<double>,TSizedDefaultAllocator<32>> & OutSpaceBases, TArray<UE::Math::TTransform<double>,TSizedDefaultAllocator<32>> & OutBoneSpaceTransforms, UE::Math::TVector<double> & OutRootBoneTranslation, FBlendedHeapCurve & OutCurve, UE::Anim::FMeshAttributeContainer & OutAttributes) Line 2028 C++ UnrealEditor-Engine.dll!USkeletalMeshComponent::ParallelAnimationEvaluation() Line 3893 C++ UnrealEditor-Engine.dll!FParallelAnimationEvaluationTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FGraphEvent> & MyCompletionGraphEvent) Line 141 C++ UnrealEditor-Engine.dll!TGraphTask<FParallelAnimationEvaluationTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread, bool bDeleteOnCompletion) Line 975 C++ [Inline Frame] UnrealEditor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> &) Line 587 C++ [Inline Frame] UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::QueueTask::__l5::<lambda_13c427d0bfcf321a066cb5a2badfbc27>::operator()() Line 2027 C++ UnrealEditor-Core.dll!LowLevelTasks::FTask::Init::__l2::<lambda>(const bool NotCanceled) Line 350 C++ [Inline Frame] UnrealEditor-Core.dll!Invoke(LowLevelTasks::FTask::Init::__l2::void <lambda>(const bool) &) Line 47 C++ [Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<void __cdecl(bool),48>::TTaskDelegateImpl<void <lambda>(const bool),0>::Call(void *) Line 162 C++ UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<void __cdecl(bool),48>::TTaskDelegateImpl<void <lambda>(const bool),0>::CallAndMove(LowLevelTasks::TTaskDelegate<void __cdecl(bool),48> & Destination, void * InlineData, unsigned int DestInlineSize, bool <Params_0>) Line 171 C++ [Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<void __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<void __cdecl(bool),48> &) Line 308 C++ UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() Line 426 C++ UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom<&LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue::DequeueGlobal,0>(LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue * Queue, LowLevelTasks::TLocalQueueRegistry<1024>::FOutOfWork & OutOfWork, bool bPermitBackgroundWork, bool bDisableThrottleStealing) Line 280 C++ UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::FSleepEvent * WorkerEvent, LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue * ExternalWorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 320 C++ [Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda_776551d1e343b6cb7eaf0e5521c77c81>::operator()() Line 86 C++ [Inline Frame] UnrealEditor-Core.dll!Invoke(LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda_776551d1e343b6cb7eaf0e5521c77c81> &) Line 47 C++ UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefCaller<<lambda_776551d1e343b6cb7eaf0e5521c77c81>,void __cdecl(void)>::Call(void * Obj) Line 549 C++ [Inline Frame] UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() Line 676 C++ UnrealEditor-Core.dll!FThreadImpl::Run() Line 69 C++ UnrealEditor-Core.dll!FRunnableThreadWin::Run() Line 146 C++ UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() Line 68 C++ kernel32.dll!00007ffe68d37034() Unknown ntdll.dll!00007ffe6ac42651() Unknown
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-158098 in the post.
1 |
Component | UE - Simulation - Physics - Character |
---|---|
Affects Versions | 5.0 |
Target Fix | 5.2 |
Created | Jun 30, 2022 |
---|---|
Resolved | Oct 26, 2022 |
Updated | Nov 2, 2022 |