Level Sequence crash after finish play

Hi everybody.

I am upgrade project from UE5.0.3 to UE5.5.3 and recently got crash with Level Sequence.

>	[Inline Frame] UnrealEditor-MovieSceneTracks.dll!SharedPointerInternals::TReferenceControllerBase<1>::ReleaseSharedReference() Line 227	C++
 	[Inline Frame] UnrealEditor-MovieSceneTracks.dll!SharedPointerInternals::FSharedReferencer<1>::{dtor}() Line 606	C++
 	UnrealEditor-MovieSceneTracks.dll!UE::MovieScene::FCameraCutAnimator::AnimateBlendedCameraCut(const UE::MovieScene::FBlendedCameraCut & Params, UMovieSceneEntitySystemLinker * Linker, const UE::MovieScene::FSequenceInstance & SequenceInstance) Line 225	C++
 	UnrealEditor-MovieSceneTracks.dll!UMovieSceneCameraCutTrackInstance::OnAnimate() Line 570	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!UMovieSceneTrackInstance::Animate() Line 26	C++
 	UnrealEditor-MovieScene.dll!UMovieSceneTrackInstanceSystem::EvaluateAllInstances() Line 308	C++
 	UnrealEditor-MovieScene.dll!UE::MovieScene::FScheduledTask::Run(const UE::MovieScene::FEntitySystemScheduler * Scheduler, UE::MovieScene::FTaskExecutionFlags InFlags) Line 101	C++
 	UnrealEditor-MovieScene.dll!UE::MovieScene::FEntitySystemScheduler::ExecuteTasks() Line 502	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemGraph::ScheduleTasks(UE::MovieScene::FEntityManager *) Line 593	C++
 	UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::GameThread_EvaluationPhase(UMovieSceneEntitySystemLinker * Linker) Line 1080	C++
 	UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushNext(UMovieSceneEntitySystemLinker * Linker) Line 375	C++
 	UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushOutstanding(double BudgetMs, UE::MovieScene::ERunnerFlushState TargetState) Line 512	C++
 	UnrealEditor-MovieScene.dll!UMovieSceneSequenceTickManager::FlushRunners() Line 513	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::FFunctionRefStoragePolicy,void __cdecl(void)>::operator()() Line 470	C++
 	UnrealEditor-MovieScene.dll!FMovieSceneLatentActionManager::RunLatentActions(TFunctionRef<void __cdecl(void)> FlushCallback) Line 611	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!UMovieSceneSequenceTickManager::RunLatentActions() Line 501	C++
 	UnrealEditor-MovieScene.dll!UMovieSceneSequenceTickManager::TickSequenceActors(float DeltaSeconds) Line 466	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!Invoke(void(UMovieSceneSequenceTickManager::*)(float) PtrMemFun, UMovieSceneSequenceTickManager * &) Line 66	C++
 	[Inline Frame] UnrealEditor-MovieScene.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UMovieSceneSequenceTickManager::*)(float) &) Line 317	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 257	C++
 	[Inline Frame] UnrealEditor-Engine.dll!TMulticastDelegate<void __cdecl(float),FDefaultDelegateUserPolicy>::Broadcast(float) Line 1079	C++
 	UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1426	C++
 	UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2140	C++
 	UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 550	C++
 	UnrealEditor-LyraEditor-Win64-DebugGame.dll!ULyraEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 34	C++
 	UnrealEditor-Win64-DebugGame.exe!FEngineLoop::Tick() Line 5877	C++
 	[Inline Frame] UnrealEditor-Win64-DebugGame.exe!EngineTick() Line 69	C++
 	UnrealEditor-Win64-DebugGame.exe!GuardedMain(const wchar_t * CmdLine) Line 188	C++
 	UnrealEditor-Win64-DebugGame.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266	C++
 	UnrealEditor-Win64-DebugGame.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 317	C++

Before the crash there is a ensure happen:

 	UnrealEditor-MovieScene.dll!UE::MovieScene::FSequenceInstance::~FSequenceInstance() Line 122	C++
 	UnrealEditor-MovieScene.dll!TSparseArray<UE::MovieScene::FSequenceInstance,FDefaultSparseArrayAllocator>::RemoveAt(int Index, int Count) Line 358	C++
 	UnrealEditor-MovieScene.dll!UE::MovieScene::FInstanceRegistry::DestroyInstance(UE::MovieScene::FInstanceHandle InstanceHandle) Line 129	C++
 	UnrealEditor-MovieScene.dll!UMovieSceneEntitySystemLinker::DestroyInstanceImmediately(UE::MovieScene::FRootInstanceHandle Instance) Line 469	C++
 	UnrealEditor-MovieScene.dll!FMovieSceneRootEvaluationTemplateInstance::TearDown() Line 56	C++
 	UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::TearDown() Line 1436	C++
 	UnrealEditor-LevelSequence.dll!ALevelSequenceActor::EndPlay(const EEndPlayReason::Type EndPlayReason) Line 272	C++
 	[Inline Frame] UnrealEditor-Engine.dll!AActor::RouteEndPlay(const EEndPlayReason::Type) Line 2795	C++
 	UnrealEditor-Engine.dll!AActor::Destroyed() Line 2880	C++
 	UnrealEditor-Engine.dll!UWorld::DestroyActor(AActor * ThisActor, bool bNetForce, bool bShouldModifyLevel) Line 887	C++
 	UnrealEditor-Engine.dll!AActor::Destroy(bool bNetForce, bool bShouldModifyLevel) Line 4848	C++
 	UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 7192	C++
 	UnrealEditor-CoreUObject.dll!UObject::CallFunction(FFrame & Stack, void * const Z_Param__Result, UFunction * Function) Line 1147	C++
 	[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 482	C++
 	UnrealEditor-CoreUObject.dll!UObject::ProcessContextOpcode(FFrame & Stack, void * const Z_Param__Result, bool bCanFailSilently) Line 3117	C++
 	[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 482	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1214	C++
 	UnrealEditor-CoreUObject.dll!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>(UObject * Context, UFunction * Function, FFrame & Stack, void * const Z_Param__Result, void(*)(UObject *, FFrame &, void *) ExecFtor) Line 1043	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalFunction::__l2::<lambda_1>::operator()() Line 1286	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalFunction(UObject * Context, UFunction * Fn, FFrame & Stack, void * const Z_Param__Result) Line 1304	C++
 	[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 482	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1214	C++
 	UnrealEditor-CoreUObject.dll!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>(UObject * Context, UFunction * Function, FFrame & Stack, void * const Z_Param__Result, void(*)(UObject *, FFrame &, void *) ExecFtor) Line 1043	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalFunction::__l2::<lambda_1>::operator()() Line 1286	C++
 	UnrealEditor-CoreUObject.dll!ProcessLocalFunction(UObject * Context, UFunction * Fn, FFrame & Stack, void * const Z_Param__Result) Line 1304	C++

After spend time to digging into source code. I find out that at this line:

const FSequenceInstance& SequenceInstance = InstanceRegistry->GetInstance(FinalCameraCut.Input.InstanceHandle);

InstanceRegistry return invalid SequenceInstance as InstanceHandle is invalid inside InstanceRegistry.

I try to put a check if InstanceHandle is valid and it pass but will crash with similar code in different place.

Please help me on this crash.

I found the issue. My coworker uses level sequence director to destroy sequence actor, that cause the crash. I changed to use delegate from LevelSequencePlayer and crash gone.