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.