Description

Currently, there are several places in FAnimInstanceProxy and FAnimNode_Base (and derived classes) that rely on FindFunctionByName in order to resolve transitions, evaluate pins, etc.

This can happen on worker threads, and can occasionally cause crashes.

FExposedValueHandler::Initialize (called in FAnimNode_Base::Initialize) is one example.

Might be worth looking for similar calls that may also be thread unsafe.

Steps to Reproduce

Code task entered as bug

Callstack

UE4Editor-Core.dll!FDebug::AssertFailed() Line 332
UE4Editor-CoreUObject.dll!TSparseArray<TSetElement<TPair<FName,UFunction * __ptr64> >,TSparseArrayAllocator<FDefaultAllocator,FDefaultBitArrayAllocator> >::AllocateIndex() Line 70
UE4Editor-CoreUObject.dll!TSet<TPair<FName,UFunction * __ptr64>,TDefaultMapKeyFuncs<FName,UFunction * __ptr64,0>,FDefaultSetAllocator>::Emplace<TPairInitializer<FName const & __ptr64,UFunction * __ptr64 const & __ptr64> >() Line 484
UE4Editor-CoreUObject.dll!UClass::FindFunctionByName() Line 4107
UE4Editor-CoreUObject.dll!UObject::FindFunctionChecked() Line 1117
UE4Editor-CoreUObject.dll!UObject::execVirtualFunction() Line 2257
UE4Editor-CoreUObject.dll!UObject::ProcessInternal() Line 925
UE4Editor-CoreUObject.dll!UFunction::Invoke() Line 4477
UE4Editor-CoreUObject.dll!UObject::ProcessEvent() Line 1308
UE4Editor-Engine.dll!FExposedValueHandler::Execute() Line 520
UE4Editor-AnimGraphRuntime.dll!FAnimNode_BlendSpacePlayer::Initialize() Line 55
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-Engine.dll!FAnimNode_StateMachine::SetState() Line 909
UE4Editor-Engine.dll!FAnimNode_StateMachine::Initialize() Line 265
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-AnimGraphRuntime.dll!FAnimNode_ApplyAdditive::Initialize() Line 15
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-AnimGraphRuntime.dll!FAnimNode_BlendListBase::Initialize() Line 25
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-Engine.dll!FPoseLinkBase::Initialize() Line 132
UE4Editor-Engine.dll!FAnimNode_StateMachine::SetState() Line 909
UE4Editor-Engine.dll!FAnimNode_StateMachine::Update() Line 445
UE4Editor-Engine.dll!FPoseLinkBase::Update() Line 190
UE4Editor-Engine.dll!FAnimNode_SaveCachedPose::PostGraphUpdate() Line 96
UE4Editor-Engine.dll!FAnimInstanceProxy::UpdateAnimationNode() Line 40
UE4Editor-Engine.dll!FAnimInstanceProxy::UpdateAnimation() Line 762
UE4Editor-Engine.dll!USkeletalMeshComponent::PerformAnimationEvaluation() Line 1357
UE4Editor-Engine.dll!FParallelAnimationEvaluationTask::DoTask() Line 107
UE4Editor-Engine.dll!TGraphTask<FParallelAnimationEvaluationTask>::ExecuteTask(TArray<FBaseGraphTask *,FDefaultAllocator> & NewTasks, ENamedThreads::Type CurrentThread=6) Line 868
UE4Editor-Core.dll!FTaskThreadAnyThread::ProcessTasks() Line 1255
UE4Editor-Core.dll!FTaskThreadAnyThread::ProcessTasksUntilQuit(int QueueIndex) Line 1149
UE4Editor-Core.dll!FTaskThreadBase::Run() Line 621
UE4Editor-Core.dll!FRunnableThreadWin::Run() Line 74
UE4Editor-Core.dll!FRunnableThreadWin::GuardedRun() Line 31

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentOLD - Anim
Affects Versions4.134.144.15
Target Fix4.16
CreatedMar 29, 2017
ResolvedMar 30, 2017
UpdatedMay 18, 2020