Description

The crash occurs from "check(BoneBlendWeights.Num() == NumBones);"

This crash occurs when the following conditions are met;

  • The skeletal mesh LOD is changed.
  • The number of bones is difference between the previous LOD and the current LOD.
  • Bones Cache is not updated properly.

So this crash is the worst case but the engine has potential issue not to update bone caches at border between LODs.

The reported reproduce step is one of possible scenarios. In this scenario, it seems the cause is not to implement CacheBones_AnyThread() in FAnimNode_CallFunction. This can be fixed by implementing the method.

FAnimNode_CallFunction::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
{
	Source.CacheBones(Context);
} 

But this crash was confirmed without FAnimNode_CallFunction-type node. If other nodes are rechecked for similar problems, this would be ideal.

Steps to Reproduce

I attached the repro project. If you use it, you can just load All > Content > IssueMap and press RMB+S to get away from the Quinn character. Then you would meet a crash.

The repro step without the repro project is here;

1. Create a project with third person template.
2. Modify ABP_Manny Anim Graph like the screen shot;

[Image Removed]
3. Place SKM_Quinn_Simple on the level and assign ABP_Quinn.
4. Open SKM_Quinn_Simple in Skeleltal Mesh Editor.
5. Select LOD2 from LOD Picker > LOD to LOD 2 in the Asset Detail panel.6. Register some bones in LOD2 > LOD Info > Bones To Remove then click "Regenerate LOD" button, in order to reduce a number of bones in LOD2.

[Image Removed]
7. Back to the level editor and zoom-out from the character to trigger LOD mechanism.

Callstack

Assertion failed: BoneBlendWeights.Num() == NumBones [Link Removed] [Line: 1737] 

 

0x00007ffbc0d4ffd9 UnrealEditor-AnimGraphRuntime.dll!FAnimNode_LayeredBoneBlend::Evaluate_AnyThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\AnimGraphRuntime\Private\AnimNodes\AnimNode_LayeredBoneBlend.cpp:259]
0x00007ffbdbafc40d UnrealEditor-Engine.dll!FPoseLink::Evaluate() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimNodeBase.cpp:388]
0x00007ffbc0d4ebc4 UnrealEditor-AnimGraphRuntime.dll!FAnimNode_CallFunction::Evaluate_AnyThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\AnimGraphRuntime\Private\AnimNodes\AnimNode_CallFunction.cpp:76]
0x00007ffbdbafc40d UnrealEditor-Engine.dll!FPoseLink::Evaluate() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimNodeBase.cpp:388]
0x00007ffbdbafc996 UnrealEditor-Engine.dll!FAnimInstanceProxy::EvaluateAnimationNode_WithRoot() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstanceProxy.cpp:1460]
0x00007ffbdbafcddd UnrealEditor-Engine.dll!FAnimInstanceProxy::EvaluateAnimation_WithRoot() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstanceProxy.cpp:1381]
0x00007ffbdba6fe20 UnrealEditor-Engine.dll!UAnimInstance::ParallelEvaluateAnimation() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstance.cpp:842]
0x00007ffbdc214060 UnrealEditor-Engine.dll!USkeletalMeshComponent::EvaluateAnimation() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:1958]
0x00007ffbdc23a8b3 UnrealEditor-Engine.dll!USkeletalMeshComponent::PerformAnimationProcessing() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:2047]
0x00007ffbdc239ab4 UnrealEditor-Engine.dll!USkeletalMeshComponent::ParallelAnimationEvaluation() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:3974]
0x00007ffbdc2126ca UnrealEditor-Engine.dll!FParallelAnimationEvaluationTask::DoTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:153]
0x00007ffbdc216e72 UnrealEditor-Engine.dll!TGraphTask<FParallelAnimationEvaluationTask>::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1265]
0x00007ffc00c1227d UnrealEditor-Core.dll!`LowLevelTasks::FTask::Init<`FTaskGraphCompatibilityImplementation::QueueTask'::`5'::<lambda_1> >'::`11'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:499]
0x00007ffc00c1afd3 UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`FTaskGraphCompatibilityImplementation::QueueTask'::`5'::<lambda_1> >'::`11'::<lambda_1>,0>::CallAndMove() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\TaskDelegate.h:171]
0x00007ffc00c28cd5 UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:627]
0x00007ffc00c28a7c UnrealEditor-Core.dll!LowLevelTasks::FScheduler::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:150]
0x00007ffc00c080e2 UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom<LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue,&LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue::DequeueGlobal,0>() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:350]
0x00007ffc00c508c2 UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:378]
0x00007ffc00c18b60 UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefCaller<`LowLevelTasks::FScheduler::CreateWorker'::`2'::<lambda_1>,void __cdecl(void)>::Call() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Templates\Function.h:480]
0x00007ffc00dff773 UnrealEditor-Core.dll!FThreadImpl::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\HAL\Thread.cpp:69]
0x00007ffc01234e22 UnrealEditor-Core.dll!FRunnableThreadWin::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:149]
0x00007ffc01228657 UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:79]
0x00007ffc88aa7344 KERNEL32.DLL!UnknownFunction []

Crash in runnable thread Foreground Worker #5

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-199436 in the post.

0
Login to Vote

Fixed
ComponentUE - Anim - Runtime
Affects Versions5.3.1
Target Fix5.4
Fix Commit30500890
Main Commit30500895
CreatedNov 1, 2023
ResolvedJan 9, 2024
UpdatedJan 20, 2024