Sequencer Anim Mixer crashes editor when compiling Anim Blueprint with a custom node deriving from FAnimNode_DeadBlending

Summary

Editor crashes (assert failure) in UAnimInstance::GetSubsystem<FAnimSubsystem_SequencerMixer>() when the “Sequencer Anim Mixer” (MovieSceneAnimMixer) plugin is enabled and an Anim Blueprint containing a custom AnimGraph node that derives from FAnimNode_DeadBlending is compiled or saved.

What Type of Bug are you experiencing?

Animation

Steps to Reproduce

  1. Enable the “Sequencer Anim Mixer” (MovieSceneAnimMixer) experimental plugin in a project and restart the editor.
  2. Add a custom AnimGraph node (FAnimNode_Base-derived) that DERIVES from FAnimNode_DeadBlending (rather than containing it as a member – this is the only way to get a valid NodeData for a custom node; containing it as a member crashes separately via check(NodeData) in FAnimNode_DeadBlending::GetNodeIndex()).
  3. Wire this node to Output Pose in an Anim Blueprint.
  4. Compile the Anim Blueprint, or just save it (thumbnail generation triggers it too).

Expected Result

The Anim Blueprint compiles/saves normally, same as with the plugin disabled.

Observed Result

Immediate crash: “Assertion failed: Subsystem [File:…AnimInstance.h] [Line: 937]”

Affects Versions

5.8

Platform(s)

Windows

For crash reports, include your callstack

Assertion failed: Subsystem [File:D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Classes\Animation\AnimInstance.h] [Line: 937]

UnrealEditor_Core
UnrealEditor_MovieSceneAnimMixer
UnrealEditor_MovieSceneAnimMixer
UnrealEditor_AnimGraphRuntime
UnrealEditor_LocomotionFramework!FAnimNode_LFLocomotion::SegmentEvaluate() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFramework\Source\LocomotionFramework\Private\AnimNode_LFLocomotion.cpp:145]
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_LocomotionFramework!FAnimNode_LFLocomotion::EvaluateChain() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFramework\Source\LocomotionFramework\Private\AnimNode_LFLocomotion.cpp:316]
UnrealEditor_LocomotionFramework!FAnimNode_LFLocomotion::Evaluate_AnyThread() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFramework\Source\LocomotionFramework\Private\AnimNode_LFLocomotion.cpp:333]
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_LocomotionFrameworkEditor!ULocomotionCharacterFactory::CreateLFCharacter'::2’::<lambda_2>::operator()() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFrameworkEditor\Source\LocomotionFrameworkEditor\Private\LocomotionCharacterFactory.cpp:566]
UnrealEditor_LocomotionFrameworkEditor!ULocomotionCharacterFactory::CreateLFCharacter() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFrameworkEditor\Source\LocomotionFrameworkEditor\Private\LocomotionCharacterFactory.cpp:577]
UnrealEditor_LocomotionFrameworkEditor!ULFCharacterSetupRequest::Create() [C:\Users\User\Documents\Unreal Projects\ThirdPersonAdvance\Dist\LocomotionFramework\HostProject\Plugins\LocomotionFrameworkEditor\Source\LocomotionFrameworkEditor\Private\LocomotionCharacterFactory.cpp:638]
UnrealEditor_LocomotionFrameworkEditor!TBaseFunctorDelegateInstance<FReply __cdecl(void),FDefaultDelegateUserPolicy,FLFCharacterSetupCustomization::CustomizeDetails'::2’::<lambda_4> >::Execute() [C:\Program Files\Epic Games\UE_5.8\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:798]
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
user32
user32
UnrealEditor_ApplicationCore
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

Additional Notes

Root cause found by reading the engine source: FAnimNode_SequencerMixerTarget::Update_AnyThread() and ::ApplySequencerMixedPose() (Plugins/Experimental/MovieSceneAnimMixer/Source/MovieSceneAnimMixer/Private/AnimNode_SequencerMixerTarget.cpp, lines 42 and 61) call the asserting AnimInstance->GetSubsystem<FAnimSubsystem_SequencerMixer>() instead of the non-asserting FindSubsystem<FAnimSubsystem_SequencerMixer>() – both accessors sit side by side in AnimInstance.h (lines 925-939). The same function already null-checks another optional value (MixerTask) three lines below, so this looks like an oversight rather than intent. Suggested fix: use FindSubsystem<>() and early-return when null, like the MixerTask check right below it.

This is not specific to any one plugin – it reproduces with any custom AnimGraph node that derives from FAnimNode_DeadBlending, which is the documented way to get a valid NodeData for a custom node in UE5.8.