Description

When an Animation Sequence is overridden by a LevelSequence, and later reverts to its original animation state, the AnimInstance fails to properly reinitialize. This prevents subsequent animation logic—such as montage playback—from executing as expected.

Reproduction:
In our test case, we used UAbilitySystemComponent::PlayMontage, which internally calls UAnimInstance::Montage_Play. This eventually leads to a call to UAnimInstance::Montage_PlayInternal.

At this point, the montage fails to play because of the following early-out condition:
// Early out since we might have called UninitializeAnimation() when trigger montage blending out events above.

if (bUninitialized && MontageCVars::bEarlyOutMontageWhenUninitialized)

{ return 0.0f; }

The flag bUninitialized remains true because the AnimInstance does not get properly reinitialized after being re-assigned from the sequencer control. As a result, animation logic relying on montage playback (and possibly others) fails silently.

Steps to Reproduce
  1. Download and launch the project from the EPS ticket
  2. Launch the editor and PIE
  3. Press space bar and watch the character T-pose
  4. Press the G key and watch the character run
  5. Press the space bar again 

RESULT

The character no longer T-poses

EXPECTED

The character T-poses

Callstack

UAnimInstance::Montage_PlayInternal(UAnimMontage *, const FMontageBlendSettings &, float, EMontagePlayReturnType, float, bool) AnimInstance.cpp:2319
UAnimInstance::Montage_Play(UAnimMontage *, float, EMontagePlayReturnType, float, bool) AnimInstance.cpp:2385
UAbilitySystemComponent::PlayMontage(UGameplayAbility *, FGameplayAbilityActivationInfo, UAnimMontage *, float, FName, float) 0x00007ff9cb5c5d5c
UAbilityTask_PlayMontageAndWait::Activate() 0x00007ff9cb571a77
UGameplayTask::PerformActivation() GameplayTask.cpp:289
UFunction::Invoke(UObject *, FFrame &, void *const) Class.cpp:7192
UObject::CallFunction(FFrame &, void *const, UFunction *) ScriptCore.cpp:1147
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
UObject::ProcessContextOpcode(FFrame &, void *const, bool) ScriptCore.cpp:3114
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
ProcessScriptFunction<…>(UObject *, UFunction *, FFrame &, void *const, void [Image Removed](UObject *, FFrame &, void *)) ScriptCore.cpp:1040
`ProcessLocalFunction'::`2'::<lambda_1>::operator()() ScriptCore.cpp:1286
ProcessLocalFunction(UObject *, UFunction *, FFrame &, void *const) ScriptCore.cpp:1302
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
UObject::ProcessInternal(UObject *, FFrame &, void *const) ScriptCore.cpp:1329
UFunction::Invoke(UObject *, FFrame &, void *const) Class.cpp:7192
UObject::ProcessEvent(UFunction *, void *) ScriptCore.cpp:2173
[Inlined] UGameplayAbility::K2_ActivateAbility() 0x00007ff9cb51575e
UGameplayAbility::ActivateAbility(FGameplayAbilitySpecHandle, const FGameplayAbilityActorInfo *, FGameplayAbilityActivationInfo, const FGameplayEventData *) GameplayAbility.cpp:882
UGameplayAbility::CallActivateAbility(FGameplayAbilitySpecHandle, const FGameplayAbilityActorInfo *, FGameplayAbilityActivationInfo, TDelegate<…> *, const FGameplayEventData *) GameplayAbility.cpp:997
UAbilitySystemComponent::InternalTryActivateAbility(FGameplayAbilitySpecHandle, FPredictionKey, UGameplayAbility **, TDelegate<…> *, const FGameplayEventData *) 0x00007ff9cb5b261a
UAbilitySystemComponent::TriggerAbilityFromGameplayEvent(FGameplayAbilitySpecHandle, FGameplayAbilityActorInfo *, FGameplayTag, const FGameplayEventData *, UAbilitySystemComponent &) 0x00007ff9cb5d7113
UAbilitySystemComponent::HandleGameplayEvent(FGameplayTag, const FGameplayEventData *) 0x00007ff9cb5ae304
UAbilitySystemBlueprintLibrary::SendGameplayEventToActor(AActor *, FGameplayTag, FGameplayEventData) AbilitySystemBlueprintLibrary.cpp:42
UAbilitySystemBlueprintLibrary::execSendGameplayEventToActor(UObject *, FFrame &, void *const) 0x00007ff9cb5f6b61
UObject::execCallMathFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1079
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
ProcessScriptFunction<…>(UObject *, UFunction *, FFrame &, void *const, void [Image Removed](UObject *, FFrame &, void *)) ScriptCore.cpp:1040
`ProcessLocalFunction'::`2'::<lambda_1>::operator()() ScriptCore.cpp:1286
ProcessLocalFunction(UObject *, UFunction *, FFrame &, void *const) ScriptCore.cpp:1302
[Inlined] FFrame::Step(UObject *, void *const) ScriptCore.cpp:482
ProcessLocalScriptFunction(UObject *, FFrame &, void *const) ScriptCore.cpp:1241
UObject::ProcessInternal(UObject *, FFrame &, void *const) ScriptCore.cpp:1329
UFunction::Invoke(UObject *, FFrame &, void *const) Class.cpp:7192
UObject::ProcessEvent(UFunction *, void *) ScriptCore.cpp:2173
AActor::ProcessEvent(UFunction *, void *) Actor.cpp:1160
TScriptDelegate::ProcessDelegate<…>(void *) ScriptDelegates.h:448
[Inlined] FEnhancedInputActionHandlerDynamicSignature_DelegateWrapper(const TScriptDelegate<…> &, FInputActionValue, float, float, const UInputAction *) 0x00007ff9da638454
[Inlined] FEnhancedInputActionHandlerDynamicSignature::Execute(FInputActionValue, float, float, const UInputAction *) EnhancedInputComponent.h:23
[Inlined] TEnhancedInputUnifiedDelegate::Execute(FInputActionValue, float, float, const UInputAction *) EnhancedInputComponent.h:119
FEnhancedInputActionEventDelegateBinding::Execute(const FInputActionInstance &) EnhancedInputComponent.h:321
UEnhancedPlayerInput::EvaluateInputDelegates(const TArray<…> &, const float, const bool, const TArray<…> &) EnhancedPlayerInput.cpp:646
UPlayerInput::ProcessInputStack(const TArray<…> &, const float, const bool) PlayerInput.cpp:1172
APlayerController::ProcessPlayerInput(const float, const bool) PlayerController.cpp:2776
APlayerController::TickPlayerInput(const float, const bool) PlayerController.cpp:5123
APlayerController::PlayerTick(float) PlayerController.cpp:2378
APlayerController::TickActor(float, ELevelTick, FActorTickFunction &) PlayerController.cpp:5276
FActorTickFunction::ExecuteTick(float, ELevelTick, Type, const TRefCountPtr<…> &) Actor.cpp:284
[Inlined] FTickFunctionTask::DoTask(Type, const TRefCountPtr<…> &) TickTaskManager.cpp:306
TGraphTask::ExecuteTask() TaskGraphInterfaces.h:634
UE::Tasks::Private::FTaskBase::TryExecuteTask() TaskPrivate.h:504
[Inlined] FBaseGraphTask::Execute(TArray<…> &, Type, bool) TaskGraphInterfaces.h:482
FNamedTaskThread::ProcessTasksNamedThread(int, bool) TaskGraph.cpp:779
FNamedTaskThread::ProcessTasksUntilQuit(int) TaskGraph.cpp:667
[Inlined] FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn(Type) TaskGraph.cpp:1453
FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete(const TArray<…> &, Type) TaskGraph.cpp:1526
FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool) TickTaskManager.cpp:814
FTickTaskManager::RunTickGroup(ETickingGroup, bool) TickTaskManager.cpp:1865
UWorld::RunTickGroup(ETickingGroup, bool) LevelTick.cpp:773
UWorld::Tick(ELevelTick, float) LevelTick.cpp:1496
UEditorEngine::Tick(float, bool) EditorEngine.cpp:2138
UUnrealEdEngine::Tick(float, bool) UnrealEdEngine.cpp:547
FEngineLoop::Tick() LaunchEngineLoop.cpp:5871
[Inlined] EngineTick() Launch.cpp:69
GuardedMain(const wchar_t *) Launch.cpp:190
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:317
[Inlined] invoke_main() 0x00007ff79911f0ca
__scrt_common_main_seh() 0x00007ff79911f0a9
<unknown> 0x00007ffb2f007374
<unknown> 0x00007ffb30e1cc91

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Anim - Sequencer
Affects Versions5.55.6
Target Fix5.7
Fix Commit44346141
CreatedMay 28, 2025
ResolvedJul 25, 2025
UpdatedJul 29, 2025
View Jira Issue