Description

FCameraShakePreviewer is an FGCObject that strongly references the UCameraShakeBase instances it previews, and creates them outered to the previewed UWorld. Nothing releases them on world teardown, so after a Sequencer camera-shake trigger fires, the next editor map change leaves the outgoing world and its package alive and UEditorEngine::CheckForWorldGCLeaks raises a fatal error.

Steps to Reproduce

Steps to Reproduce

Run unreal at 5.7.4

  1. Open a map in the editor
  2. Open a ULevelSequence containing a camera shake trigger track whose shake class has an infinite / looping pattern (i.e. UCameraShakeBase::IsFinished() never returns true).
  3. Scrub or play the sequence so the trigger fires at least once. TriggerOneShotShakes adds a preview instance via FCameraShakePreviewer::AddCameraShake.
  4. Open a different level (File > Open Level, or any path reaching FEditorFileUtils::LoadMap).
  5. Fatal error as above. Setting gc.historysize 1 first makes the retaining chain visible.

 

Callstack
[Inlined] UE::Logging::Private::BasicFatalLogV::__l2::<lambda_1>::operator()() StructuredLog.cpp:1712
[Inlined] UE::Logging::Private::BasicFatalLogV(const UE::Logging::Private::TStaticBasicLogRecord<…> &, void *, char *) StructuredLog.cpp:1712
UE::Logging::Private::BasicFatalLog<char>(const UE::Logging::Private::TStaticBasicLogRecord<char> &,const FLogCategoryBase *,...) StructuredLog.cpp:1723
UEditorEngine::CheckForWorldGCLeaks(UWorld *, UPackage *) EditorServer.cpp:1951
UEditorEngine::EditorDestroyWorld(FWorldContext &, const FText &, UWorld *) EditorServer.cpp:2092
UEditorEngine::Map_Load(const wchar_t *, FOutputDevice &) EditorServer.cpp:2480
UEditorEngine::HandleMapCommand(const wchar_t *, FOutputDevice &, UWorld *) EditorServer.cpp:6389
UEditorEngine::Exec_Editor(UWorld *, const wchar_t *, FOutputDevice &) EditorServer.cpp:5906
FExec::Exec(UWorld *, const wchar_t *, FOutputDevice &) Exec.cpp:18
UEngine::Exec(UWorld *, const wchar_t *, FOutputDevice &) UnrealEngine.cpp:5527
UUnrealEdEngine::Exec(UWorld *, const wchar_t *, FOutputDevice &) UnrealEdSrv.cpp:691
FEditorFileUtils::LoadMap(const FString &, bool, const bool) FileHelpers.cpp:3304
`FEditorFileUtils::LoadMap'::`2'::FLocal::HandleLevelsChosen(const TArray<FAssetData,TSizedDefaultAllocator<32> > &) FileHelpers.cpp:3125
[Inlined] Invoke(void (*const &)(const TArray<…> &), const TArray<…> &) Invoke.h:46
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (*const &)(const TArray<…> &), const TArray<…> &) Tuple.h:264
TBaseStaticDelegateInstance::ExecuteIfSafe(const TArray<…> &) DelegateInstancesImpl.h:721
[Inlined] TDelegate::ExecuteIfBound(const TArray<…> &) DelegateSignatureImpl.inl:644
`FEditorFileUtils::OpenLevelPickingDialog'::`2'::FLocal::OnLevelsSelected(const TArray<FAssetData,TSizedDefaultAllocator<32> > &,TDelegate<void __cdecl(TArray<FAssetData,TSizedDefaultAllocator<32> > const &),FDefaultDelegateUserPolicy>) FileHelpers.cpp:2908
[Inlined] Invoke(void (*const &)(const TArray<…> &, TDelegate<…>), const TArray<…> &, const TDelegate<…> &) Invoke.h:46
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (*const &)(const TArray<…> &, TDelegate<…>), const TArray<…> &) Tuple.h:264
TBaseStaticDelegateInstance::ExecuteIfSafe(const TArray<…> &) DelegateInstancesImpl.h:721
[Inlined] TDelegate::ExecuteIfBound(const TArray<…> &) DelegateSignatureImpl.inl:644
SAssetDialog::ChooseAssetsForOpen(const TArray<…> &) SAssetDialog.cpp:1395
SAssetDialog::OnAssetsActivated(const TArray<…> &, Type) SAssetDialog.cpp:1264
[Inlined] Invoke(void (SAssetDialog::*)(const TArray<…> &, EAssetTypeActivationMethod::Type), SAssetDialog *&, const TArray<…> &, EAssetTypeActivationMethod::Type &&) Invoke.h:65
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SAssetDialog::*&)(const TArray<…> &, EAssetTypeActivationMethod::Type), SAssetDialog *&, const TArray<…> &, EAssetTypeActivationMethod::Type &&) Tuple.h:264
TBaseSPMethodDelegateInstance::ExecuteIfSafe(const TArray<…> &, Type) DelegateInstancesImpl.h:283
[Inlined] TDelegate::ExecuteIfBound(const TArray<…> &, Type) DelegateSignatureImpl.inl:644
SAssetPicker::HandleItemsActivated(TArrayView<…>, Type) SAssetPicker.cpp:694
[Inlined] Invoke(void (SAssetPicker::*)(TArrayView<…>, EAssetTypeActivationMethod::Type), SAssetPicker *&, TArrayView<…> &&, EAssetTypeActivationMethod::Type &&) Invoke.h:65
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SAssetPicker::*&)(TArrayView<…>, EAssetTypeActivationMethod::Type), SAssetPicker *&, TArrayView<…> &&, EAssetTypeActivationMethod::Type &&) Tuple.h:264
TBaseSPMethodDelegateInstance::Execute(TArrayView<…>, Type) DelegateInstancesImpl.h:266
[Inlined] TDelegate::Execute(TArrayView<…>, Type) DelegateSignatureImpl.inl:628
SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<…>) SAssetView.cpp:5810
[Inlined] Invoke(void (SAssetView::*)(TSharedPtr<…>), SAssetView *&, TSharedPtr<…> &&) Invoke.h:65
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SAssetView::*&)(TSharedPtr<…>), SAssetView *&, TSharedPtr<…> &&) Tuple.h:264
TBaseSPMethodDelegateInstance::ExecuteIfSafe(TSharedPtr<…>) DelegateInstancesImpl.h:283
TDelegate::ExecuteIfBound(TSharedPtr<…>) DelegateSignatureImpl.inl:644
SListView::Private_OnItemDoubleClicked(TSharedPtr<…>) SListView.h:1428
STableRow::OnMouseButtonDoubleClick(const FGeometry &, const FPointerEvent &) STableRow.h:447
[Inlined] FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_1>::operator()(const FArrangedWidget &, const FPointerEvent &) SlateApplication.cpp:6073
FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,`FSlateApplication::RoutePointerDoubleClickEvent'::`2'::<lambda_1> >(FSlateApplication *,FBubblePolicy,FPointerEvent,const <lambda_1> &,ESlateDebuggingInputEvent) SlateApplication.cpp:465
FSlateApplication::RoutePointerDoubleClickEvent(const FWidgetPath &, const FPointerEvent &) SlateApplication.cpp:6071
FSlateApplication::ProcessMouseButtonDoubleClickEvent(const TSharedPtr<…> &, const FPointerEvent &) SlateApplication.cpp:6054
FSlateApplication::OnMouseDoubleClick(const TSharedPtr<…> &, Type, TVector2<…>) SlateApplication.cpp:6019
FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage &) WindowsApplication.cpp:3498
FWindowsApplication::DeferMessage(TSharedPtr<…> &, HWND__ *, unsigned int, unsigned long long, long long, int, int, unsigned int) WindowsApplication.cpp:4197
FWindowsApplication::ProcessMessage(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2417
[Inlined] WindowsApplication_WndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2206
FWindowsApplication::AppWndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:2211
[Inlined] WinPumpMessages() WindowsPlatformApplicationMisc.cpp:212
FWindowsPlatformApplicationMisc::PumpMessages(bool) WindowsPlatformApplicationMisc.cpp:241
FEngineLoop::Tick() LaunchEngineLoop.cpp:5784
[Inlined] EngineTick() Launch.cpp:60
GuardedMain(const wchar_t *) Launch.cpp:192
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:338

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - ACT Character - Sequencer
Affects Versions5.7
Target Fix5.9
Fix Commit57399885
CreatedAug 21, 2026
ResolvedAug 25, 2026
UpdatedSep 3, 2026
View Jira Issue