Description

When a level sequence animates level visibility as well as skeletal animation on an actor within that sub-level, restoring state will first unstream the level, which will unregister the skeletal mesh component on that actor. Then when attempting to restore state on the skeletal animation, changes to the anim instance may cause an animation evaluate to be forced, which has the potential of crashing if an anim node in the animation blueprint makes reference to the FBoneContainer which may be empty due to component being unregistered.

Steps to Reproduce

Use provided test project or create a level sequence that animates level visibility as well as skeletal animation on an actor in the sub-level that is being made visible and play the sequence at runtime. Crash will occur upon the sequence ending and restoring state. [Link Removed]

 

Callstack
> [Inline Frame] UnrealEditor-Engine.dll!TBitArray<FDefaultBitArrayAllocator>::operator[](int Index) Line 1412 C++[Inline Frame] UnrealEditor-Engine.dll!FBoneContainer::Contains(unsigned short) Line 510 C++UnrealEditor-Engine.dll!FBoneReference::IsValidToEvaluate(const FBoneContainer & RequiredBones) Line 60 C++UnrealEditor-AnimGraphRuntime.dll!FAnimNode_SkeletalControlBase::Update_AnyThread(const FAnimationUpdateContext & Context) Line 115 C++UnrealEditor-Engine.dll!FPoseLinkBase::Update(const FAnimationUpdateContext & InContext) Line 342 C++UnrealEditor-Engine.dll!FPoseLinkBase::Update(const FAnimationUpdateContext & InContext) Line 342 C++UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimationNode_WithRoot(const FAnimationUpdateContext & InContext, FAnimNode_Base * InRootNode, FName InLayerName) Line 142 C++UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimationNode(const FAnimationUpdateContext & InContext) Line 120 C++UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimation_WithRoot(const FAnimationUpdateContext & InContext, FAnimNode_Base * InRootNode, FName InLayerName) Line 1345 C++UnrealEditor-Engine.dll!FAnimInstanceProxy::UpdateAnimation() Line 1225 C++UnrealEditor-Engine.dll!UAnimInstance::ParallelUpdateAnimation() Line 777 C++UnrealEditor-Engine.dll!UAnimInstance::UpdateAnimation(float DeltaSeconds, bool bNeedsValidRootMotion, UAnimInstance::EUpdateAnimationFlag UpdateFlag) Line 632 C++UnrealEditor-MovieSceneTracks.dll!FAnimCustomInstanceHelper::UnbindFromSkeletalMeshComponent<UAnimSequencerInstance>(USkeletalMeshComponent * InSkeletalMeshComponent) Line 271 C++UnrealEditor-MovieSceneTracks.dll!UE::MovieScene::FPreAnimatedSkeletalAnimationTraits::RestorePreAnimatedValue(const FObjectKey & Object, UE::MovieScene::FPreAnimatedSkeletalAnimationState & InOutCachedValue, const UE::MovieScene::FRestoreStateParams & Params) Line 112 C++UnrealEditor-MovieSceneTracks.dll!UE::MovieScene::TPreAnimatedStateStorage<UE::MovieScene::FPreAnimatedSkeletalAnimationTraits>::RestorePreAnimatedStateStorage(UE::MovieScene::FPreAnimatedStorageIndex StorageIndex, UE::MovieScene::EPreAnimatedStorageRequirement SourceRequirement, UE::MovieScene::EPreAnimatedStorageRequirement TargetRequirement, const UE::MovieScene::FRestoreStateParams & Params) Line 274 C++UnrealEditor-MovieScene.dll!UE::MovieScene::FPreAnimatedStateExtension::RemoveMetaData(const UE::MovieScene::FPreAnimatedStateMetaData & MetaData) Line 187 C++UnrealEditor-MovieScene.dll!UE::MovieScene::TPreAnimatedCaptureSources<UE::MovieScene::FMovieSceneEntityID>::StopTrackingCaptureSource(const UE::MovieScene::FMovieSceneEntityID & InKey) Line 73 C++[Inline Frame] UnrealEditor-MovieScene.dll!UE::MovieScene::FPreAnimatedEntityCaptureSource::StopTrackingEntity(UE::MovieScene::FMovieSceneEntityID EntityID) Line 127 C++[Inline Frame] UnrealEditor-MovieScene.dll!UMovieSceneRestorePreAnimatedStateSystem::OnRun::__l7::<lambda_2>::operator()(UE::MovieScene::FMovieSceneEntityID) Line 135 C++[Inline Frame] UnrealEditor-MovieScene.dll!UE::MovieScene::TEntityTaskComponentsImpl<TIntegerSequence<int,0>,UE::MovieScene::FEntityIDAccess>::Iterate_PerEntityImpl(UE::MovieScene::FEntityManager *) Line 917 C++[Inline Frame] UnrealEditor-MovieScene.dll!UE::MovieScene::TFilteredEntityTask<UE::MovieScene::FEntityIDAccess>::Iterate_PerEntity(UE::MovieScene::FEntityManager *) Line 1465 C++UnrealEditor-MovieScene.dll!UMovieSceneRestorePreAnimatedStateSystem::OnRun(UE::MovieScene::FSystemTaskPrerequisites & InPrerequisites, UE::MovieScene::FSystemSubsequentTasks & Subsequents) Line 138 C++UnrealEditor-MovieScene.dll!UMovieSceneEntitySystem::Run(UE::MovieScene::FSystemTaskPrerequisites & InPrerequisites, UE::MovieScene::FSystemSubsequentTasks & Subsequents) Line 731 C++UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemGraph::ExecutePhase<TArray<unsigned short,TSizedInlineAllocator<8,32,TSizedDefaultAllocator<32>>>>(UE::MovieScene::ESystemPhase Phase, const TArray<unsigned short,TSizedInlineAllocator<8,32,TSizedDefaultAllocator<32>>> & SortedEntries, UMovieSceneEntitySystemLinker * Linker, TArray<TRefCountPtr<FGraphEvent>,TSizedInlineAllocator<4,32,TSizedDefaultAllocator<32>>> & OutTasks) Line 410 C++[Inline Frame] UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemGraph::ExecutePhase(UE::MovieScene::ESystemPhase) Line 352 C++UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::GameThread_InstantiationPhase(UMovieSceneEntitySystemLinker * Linker) Line 1051 C++UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushNext(UMovieSceneEntitySystemLinker * Linker) Line 405 C++UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushOutstanding(double BudgetMs, UE::MovieScene::ERunnerFlushState TargetState) Line 551 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::StopInternal(FFrameTime TimeToResetTo) Line 524 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::FinishPlaybackInternal(FFrameTime TimeToFinishAt) Line 562 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::UpdateTimeCursorPosition_Internal(FFrameTime NewPosition, EUpdatePositionMethod Method, bool bHasJumpedOverride) Line 1268 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::UpdateTimeCursorPosition(FFrameTime NewPosition, EUpdatePositionMethod Method, bool bHasJumpedOverride) Line 1112 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::Update(const float DeltaSeconds) Line 1078 C++[Inline Frame] UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::UpdateAsync(const float) Line 1101 C++UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::TickFromSequenceTickManager(float DeltaSeconds, FMovieSceneEntitySystemRunner * InRunner) Line 1093 C++UnrealEditor-MovieScene.dll!UMovieSceneSequenceTickManager::TickSequenceActors(float DeltaSeconds) Line 412 C++[Inline Frame] UnrealEditor-MovieScene.dll!Invoke(void(UMovieSceneSequenceTickManager::*)(float)) Line 66 C++[Inline Frame] UnrealEditor-MovieScene.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UMovieSceneSequenceTickManager::*)(float) &) Line 309 C++UnrealEditor-MovieScene.dll!TBaseUObjectMethodDelegateInstance<0,UMovieSceneSequenceTickManager,void __cdecl(float),FDefaultDelegateUserPolicy>::ExecuteIfSafe(float <Params_0>) Line 667 C++[Inline Frame] UnrealEditor-Engine.dll!TMulticastDelegateBase<FDefaultDelegateUserPolicy>::Broadcast(float) Line 254 C++UnrealEditor-Engine.dll!TMulticastDelegate<void __cdecl(float),FDefaultDelegateUserPolicy>::Broadcast(float <Params_0>) Line 956 C++UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1438 C++UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2015 C++UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 550 C++UnrealEditor.exe!FEngineLoop::Tick() Line 5921 C++[Inline Frame] UnrealEditor.exe!EngineTick() Line 61 C++UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 180 C++UnrealEditor.exe!GuardedMainWrapper(const wchar_t * CmdLine) Line 118 C++UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 258 C++UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 298 C++[External Code] 

Have Comments or More Details?

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

1
Login to Vote

Fixed
ComponentUE - Anim - Sequencer
Affects Versions5.4
Target Fix5.5
Fix Commit34870210
CreatedJul 16, 2024
ResolvedJul 18, 2024
UpdatedJul 22, 2024
View Jira Issue