It's possible for there to be multiple instances of the same sequence in the evaluation states cache if the same sequence is used in multiple sub-sections.
Caches are never removed from the evaluation state so the sequence ID that it returns may point to an invalid sequence.
When we remove the sub-section and read a new sub-section with the same sequence, the sequence IDs for the sections are not the same. This means we end up with two separate cache entries in the evaluation state, one of which is no longer valid. Anytime from this point on (until the sequencer is closed and reopened), any calls to `FMovieSceneSequenceIDRef::FindSequenceId` will return a sequence ID that no longer exists in the sequence hierarchy, and if we end up in a code path where this invalid ID makes its way to `FSubSequencePath::Reset`, we will hit an ensure.
Steps to Reproduce
At this point the ensure will be hit.
Script Stack (0 frames) :
Ensure condition failed: CurrentNode && OuterSubData [Link Removed] [Line: 81]
Malformed sequence hierarchy
[2025.09.05-00.09.26:484][775]LogOutputDevice: Error: Ensure condition failed: CurrentNode && OuterSubData [Link Removed] [Line: 81]
Malformed sequence hierarchy
> UnrealEditor-MovieScene.dll!UE::MovieScene::FSubSequencePath::Reset::__l19::<lambda_1>::operator()() Line 81 C++
UnrealEditor-MovieScene.dll!UE::MovieScene::FSubSequencePath::Reset(FMovieSceneSequenceID LeafID, const FMovieSceneSequenceHierarchy * RootHierarchy) Line 81 C++
UnrealEditor-MovieScene.dll!UE::MovieScene::FSubSequencePath::FSubSequencePath(FMovieSceneSequenceID LeafID, const FMovieSceneSequenceHierarchy * RootHierarchy) Line 30 C++
UnrealEditor-MovieScene.dll!UE::MovieScene::ResolveExternalSequenceID(FMovieSceneSequenceID SourceSequenceID, int RemapSourceParentIndex, FMovieSceneSequenceID TargetSequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 38 C++
UnrealEditor-MovieScene.dll!FMovieSceneObjectBindingID::ResolveToFixed(FMovieSceneSequenceID RuntimeSequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 186 C++
UnrealEditor-MovieScene.dll!FMovieSceneObjectCache::UpdateBindings(const FGuid & InGuid, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 485 C++
UnrealEditor-MovieScene.dll!FMovieSceneObjectCache::FindBoundObjects(const FGuid & InBindingID, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> InSharedPlaybackState) Line 75 C++
UnrealEditor-MovieScene.dll!FMovieSceneEvaluationState::FindBoundObjects(const FGuid & ObjectBindingID, const FMovieSceneSequenceID & SequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 425 C++
UnrealEditor-MovieScene.dll!MovieSceneHelpers::GetResolutionContext(UMovieSceneSequence * Sequence, const FGuid & ObjectId, const FMovieSceneSequenceID & SequenceID, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 1096 C++
UnrealEditor-MovieScene.dll!MovieSceneHelpers::GetSingleBoundObject(UMovieSceneSequence * Sequence, const FGuid & ObjectId, TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState, int BindingIndex) Line 862 C++
UnrealEditor-LevelSequenceEditor.dll!FMovieSceneBindingPropertyInfoListCustomization::CustomizeDetails(IDetailLayoutBuilder & DetailBuilder) Line 219 C++
UnrealEditor-PropertyEditor.dll!DetailLayoutHelpers::QueryCustomDetailLayout(FDetailLayoutData & LayoutData, const TMap<TWeakObjectPtr<UStruct,FWeakObjectPtr>,FDetailLayoutCallback,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<TWeakObjectPtr<UStruct,FWeakObjectPtr>,FDetailLayoutCallback,0>> & InstancedDetailLayoutMap, const TDelegate<TSharedRef<IDetailCustomization,1> __cdecl(void),FDefaultDelegateUserPolicy> & GenericLayoutDelegate) Line 358 C++
UnrealEditor-PropertyEditor.dll!SDetailsViewBase::UpdateSinglePropertyMap(TSharedPtr<FComplexPropertyNode,1> InRootPropertyNode, FDetailLayoutData & LayoutData, bool bIsExternal) Line 725 C++
UnrealEditor-PropertyEditor.dll!SDetailsViewBase::UpdatePropertyMaps() Line 636 C++
UnrealEditor-PropertyEditor.dll!SDetailsViewBase::UpdatePropertyMapsWithItemExpansions() Line 688 C++
UnrealEditor-PropertyEditor.dll!SDetailsView::PostSetObject(const TArray<FDetailsViewObjectRoot,TSizedDefaultAllocator<32>> & Roots) Line 1069 C++
UnrealEditor-PropertyEditor.dll!SDetailsView::SetObjectArrayPrivate(const TArray<UObject *,TSizedDefaultAllocator<32>> & InObjects) Line 834 C++
UnrealEditor-PropertyEditor.dll!SDetailsView::SetObjects(const TArray<UObject *,TSizedDefaultAllocator<32>> & InObjects, bool bForceRefresh, bool bOverrideLock) Line 585 C++
UnrealEditor-PropertyEditor.dll!SDetailsView::SetObject(UObject * InObject, bool bForceRefresh) Line 612 C++
UnrealEditor-LevelSequenceEditor.dll!ULevelSequenceEditorSubsystem::RefreshBindingDetails(IDetailsView * DetailsView, FGuid ObjectBindingID) Line 3282 C++
UnrealEditor-LevelSequenceEditor.dll!ULevelSequenceEditorSubsystem::AddBindingPropertiesMenu(FMenuBuilder & MenuBuilder) Line 2702 C++
[Inline Frame] UnrealEditor-LevelSequenceEditor.dll!ULevelSequenceEditorSubsystem::AddBindingPropertiesSidebar(FMenuBuilder &) Line 2757 C++
UnrealEditor-LevelSequenceEditor.dll!ULevelSequenceEditorSubsystem::Initialize::__l2::<lambda_10>::operator()(FMenuBuilder & MenuBuilder) Line 724 C++
[External Code]
[Inline Frame] UnrealEditor-Slate.dll!TDelegate<void __cdecl(FMenuBuilder &),FDefaultDelegateUserPolicy>::ExecuteIfBound(FMenuBuilder &) Line 635 C++
UnrealEditor-Slate.dll!FExtender::Apply(FName ExtensionHook, EExtensionHook::Position HookPosition, FMenuBuilder & MenuBuilder) Line 189 C++
UnrealEditor-Slate.dll!FMenuBuilder::ApplyHook(FName InExtensionHook, EExtensionHook::Position HookPosition) Line 530 C++
UnrealEditor-Slate.dll!FMenuBuilder::BeginSection(FName InExtensionHook, const TAttribute<FText> & InHeadingText, const TAttribute<EVisibility> & InVisibility, const TAttribute<FMenuEntryResizeParams> & InResizeParams) Line 344 C++
UnrealEditor-Sequencer.dll!FSequencerSelectionDrawer::BuildOutlinerDetails(const TSharedRef<UE::Sequencer::FSequencerSelection,1> & InSelection, FMenuBuilder & MenuBuilder) Line 386 C++
UnrealEditor-Sequencer.dll!FSequencerSelectionDrawer::UpdateFromSelectionNextFrame() Line 274 C++
UnrealEditor-Engine.dll!FTimerUnifiedDelegate::Execute() Line 367 C++
UnrealEditor-Engine.dll!FTimerManager::Tick(float DeltaTime) Line 1076 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1806 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 537 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5878 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 63 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 198 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 288 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 368 C++
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-318757 in the post.
0 |
Component | UE - Anim - Sequencer |
---|---|
Affects Versions | 5.6 |
Created | Sep 5, 2025 |
---|---|
Updated | Sep 5, 2025 |