Description

In 5.7, a Sequencer that contains a Spawnable ChaosCacheManager will crash the Engine on EndPlay.
The licensee has reported, and I've confirmed, that this behavior started in 5.7.
I've confirmed this worked well in UE versions 5.3, 5.4, 5.5, 5.6. In 5.7 and 5.8 (CL48797988) the crash reproduces.

Checking the source code, an assert is fired at line 1168 of CacheManagerActor.cpp:

void AChaosCacheManager::WaitForObservedComponentSolverTasks()
{
check(ActiveAdapters.IsEmpty() || ObservedComponents.Num() == ActiveAdapters.Num());

ObservedComponents is Empty
ObservedComponents.Num() is zero and ActiveAdapters.Num() is 1

Steps to Reproduce

I'll attach a repro project. To use it, simply open the project in UE version 5.7 and up, Play-In-Editor (PIE), and upon EndPlay observe the crash.

To create from scratch:
Create a blank project
Create a new scene
Create a Cube some distance from the floor so it can fall
Make it a Geometry Collection (GC) and fracture it
Select the GC and set all Damage Threshold to 1 to guarantee breakage on impact
With the GC selected, go to Actor>Chaos>Create Cache Manager (CCM) - save
PIE and let the simulation be recorded by the CCM
Set CacheMode to StaticPose
Add a LevelSequence (LS) to the scene
Drop the CCM into the LS
Right click - Convert to Spawnable
Animate the Start Time
Save everything because the engine will crash
PIE
The animation plays
Stop
Observe the crash

Callstack

> UnrealEditor-ChaosCaching.dll!AChaosCacheManager::WaitForObservedComponentSolverTasks() Line 1168 C++
UnrealEditor-ChaosCaching.dll!AChaosCacheManager::EndEvaluate() Line 686 C++
UnrealEditor-ChaosCaching.dll!AChaosCacheManager::EndPlay(const EEndPlayReason::Type EndPlayReason) Line 656 C++
UnrealEditor-Engine.dll!AActor::RouteEndPlay(const EEndPlayReason::Type EndPlayReason) Line 3203 C++
UnrealEditor-Engine.dll!AActor::Destroyed() Line 3288 C++
UnrealEditor-Engine.dll!UWorld::DestroyActor(AActor * ThisActor, bool bNetForce, bool bShouldModifyLevel) Line 928 C++
UnrealEditor-MovieScene.dll!UMovieSceneSpawnableBindingBase::DestroySpawnedObject(UObject * Object) Line 133 C++
UnrealEditor-LevelSequence.dll!FLevelSequenceSpawnRegister::DestroySpawnedObject(UObject & Object, UMovieSceneSpawnableBindingBase * CustomSpawnableBinding) Line 43 C++
[Inline Frame] UnrealEditor-MovieScene.dll!TSet<TTuple<FMovieSceneSpawnRegister::FMovieSceneSpawnRegisterKey,FMovieSceneSpawnRegister::FSpawnedObject>,TDefaultMapHashableKeyFuncs<FMovieSceneSpawnRegister::FMovieSceneSpawnRegisterKey,FMovieSceneSpawnRegister::FSpawnedObject,0>,FDefaultSetAllocator>::TIterator::RemoveCurrent() Line 1600 C++
[Inline Frame] UnrealEditor-MovieScene.dll!TMapBase<FMovieSceneSpawnRegister::FMovieSceneSpawnRegisterKey,FMovieSceneSpawnRegister::FSpawnedObject,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FMovieSceneSpawnRegister::FMovieSceneSpawnRegisterKey,FMovieSceneSpawnRegister::FSpawnedObject,0>>::TIterator::RemoveCurrent() Line 947 C++
UnrealEditor-MovieScene.dll!FMovieSceneSpawnRegister::DestroyObjectsByPredicate(TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState, const TFunctionRef<bool __cdecl(FGuid const &,enum ESpawnOwnership,FMovieSceneSequenceID const &,int)> & Predicate) Line 197 C++
[Inline Frame] UnrealEditor-MovieScene.dll!FMovieSceneSpawnRegister::DestroyObjectsByPredicate(TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1>) Line 154 C++
UnrealEditor-MovieScene.dll!FMovieSceneSpawnRegister::CleanUp(TSharedRef<UE::MovieScene::FSharedPlaybackState const ,1> SharedPlaybackState) Line 222 C++
UnrealEditor-MovieScene.dll!UE::MovieScene::FSequenceInstance::Finish() Line 395 C++
UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::GameThread_UpdateSequenceInstances(UMovieSceneEntitySystemLinker * Linker) Line 948 C++
UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushNext(UMovieSceneEntitySystemLinker * Linker) Line 409 C++
UnrealEditor-MovieScene.dll!FMovieSceneEntitySystemRunner::FlushOutstanding(double BudgetMs, UE::MovieScene::ERunnerFlushState TargetState) Line 579 C++
UnrealEditor-MovieScene.dll!UMovieSceneSequencePlayer::StopInternal(FFrameTime TimeToResetTo) Line 532 C++
UnrealEditor-LevelSequence.dll!ALevelSequenceActor::EndPlay(const EEndPlayReason::Type EndPlayReason) Line 262 C++
UnrealEditor-Engine.dll!AActor::RouteEndPlay(const EEndPlayReason::Type EndPlayReason) Line 3203 C++
UnrealEditor-Engine.dll!UWorld::EndPlay(EEndPlayReason::Type EndPlayReason) Line 6094 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::TeardownPlaySession(FWorldContext & PieWorldContext) Line 891 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::EndPlayMap() Line 346 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2509 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 537 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5828 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 190 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 334 C++
[External Code]

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Simulation - Physics
Affects Versions5.75.8
CreatedNov 30, 2025
UpdatedFeb 26, 2026
View Jira Issue