Description

A user has reported that when using the Scene Outliner in a large map that has many actors and nested folders in the Outliner, deleting a folder that has subfolders from the Scene Outliner with Delete key and at the same time right clicking that folder and hovering "Move To" in the context menu causes a crash.

Because folder deletion is instant and usually doesn't let you right click the item that you've just removed, this is likely an issue with complex maps only where slow performance of the delete action and/or editor UI refresh allow this scenario.

Steps to Reproduce

Provided by user:

  1. Open/Create a map with a lot of actors/folders(repro'ed on a map with 60k actors and hundreds of folders).
  2. Select one of the folders in the map.
  3. Right-click and create a subfolder, giving it a unique name( e.g. “abc1” )
  4. Right-click on the newly created folder and add a subfolder to it, giving it a unique name (e.g. “abc2”).
  5. Select the first subfolder you created.
  6. Use the “del” keyboard key to delete the folder. At the same time attempt to right click on the same folder and move the cursor to the “Move To” option in the sub-menu.
  7. Observe crash or repeat steps.
Callstack
  1. UnrealEditor-SceneOutliner.dll!SSceneOutliner::GatherInvalidMoveToDestinations() Line 1288 C++
  2. UnrealEditor-SceneOutliner.dll!SSceneOutliner::AddMoveToFolderOutliner(UToolMenu * Menu) Line 1346 C++
  3. UnrealEditor-SceneOutliner.dll!SSceneOutliner::FillFoldersSubMenu(UToolMenu * Menu) Line 1279 C++
  4. [Inline Frame] UnrealEditor-SceneOutliner.dll!Invoke(void(const SSceneOutliner::*)(UToolMenu *)) Line 66 C++
  5. [Inline Frame] UnrealEditor-SceneOutliner.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(const SSceneOutliner::*)(UToolMenu *) &) Line 321 C++
  6. UnrealEditor-SceneOutliner.dll!TBaseSPMethodDelegateInstance<1,SSceneOutliner const ,1,void __cdecl(UToolMenu *),FDefaultDelegateUserPolicy>::Execute(UToolMenu * <Params_0>) Line 275 C++
  7. [Inline Frame] UnrealEditor-ToolMenus.dll!TDelegate<void __cdecl(UToolMenu *),FDefaultDelegateUserPolicy>::Execute(UToolMenu *) Line 632 C++
  8. UnrealEditor-ToolMenus.dll!UToolMenus::GenerateSubMenu(const UToolMenu * InGeneratedParent, const FName InBlockName) Line 1130 C++
  9. UnrealEditor-ToolMenus.dll!UToolMenus::PopulateSubMenu(FMenuBuilder & MenuBuilder, TWeakObjectPtr<UToolMenu,FWeakObjectPtr> InParent, const FName InBlockName) Line 1169 C++
  10. [Inline Frame] UnrealEditor-ToolMenus.dll!Invoke(void(UToolMenus::*)(FMenuBuilder &, TWeakObjectPtr<UToolMenu,FWeakObjectPtr>, FName)) Line 66 C++
  11. [Inline Frame] UnrealEditor-ToolMenus.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int,0,1>,TWeakObjectPtr<UToolMenu,FWeakObjectPtr>,FName>::ApplyAfter(void(UToolMenus::*)(FMenuBuilder &, TWeakObjectPtr<UToolMenu,FWeakObjectPtr>, FName) &) Line 321 C++
  12. UnrealEditor-ToolMenus.dll!TBaseUObjectMethodDelegateInstance<0,UToolMenus,void __cdecl(FMenuBuilder &),FDefaultDelegateUserPolicy,TWeakObjectPtr<UToolMenu,FWeakObjectPtr>,FName>::Execute(FMenuBuilder & <Params_0>) Line 535 C++
  13. [Inline Frame] UnrealEditor-Slate.dll!TDelegate<void __cdecl(FMenuBuilder &),FDefaultDelegateUserPolicy>::Execute(FMenuBuilder &) Line 632 C++
  14. UnrealEditor-Slate.dll!SMenuEntryBlock::MakeNewMenuWidget() Line 1558 C++
  15. [Inline Frame] UnrealEditor-Slate.dll!Invoke(TSharedRef<SWidget,1>(const SMenuEntryBlock::*)()) Line 66 C++
  16. [Inline Frame] UnrealEditor-Slate.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(TSharedRef<SWidget,1>(const SMenuEntryBlock::*)() &) Line 321 C++
  17. UnrealEditor-Slate.dll!TBaseSPMethodDelegateInstance<1,SMenuEntryBlock const ,1,TSharedRef<SWidget,1> __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 275 C++
  18. [Inline Frame] UnrealEditor-Slate.dll!TDelegate<TSharedRef<SWidget,1> __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 632 C++
  19. UnrealEditor-Slate.dll!SMenuAnchor::SetIsOpen(bool InIsOpen, const bool bFocusMenu, const int FocusUserIndex) Line 326 C++
  20. UnrealEditor-Slate.dll!SMenuEntryBlock::UpdateSubMenuState(double InCurrentTime, float InDeltaTime, bool bWantsOpen) Line 1497 C++
  21. [Inline Frame] UnrealEditor-Slate.dll!Invoke(EActiveTimerReturnType(SMenuEntryBlock::*)(double, float, bool)) Line 66 C++
  22. [Inline Frame] UnrealEditor-Slate.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int,0>,bool>::ApplyAfter(EActiveTimerReturnType(SMenuEntryBlock::*)(double, float, bool) &) Line 321 C++
  23. UnrealEditor-Slate.dll!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,1,enum EActiveTimerReturnType __cdecl(double,float),FDefaultDelegateUserPolicy,bool>::Execute(double <Params_0>, float <Params_1>) Line 275 C++
  24. UnrealEditor-SlateCore.dll!SWidget::ExecuteActiveTimers(double CurrentTime, float DeltaTime) Line 1797 C++
  25. UnrealEditor-SlateCore.dll!SWidget::Paint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 1418 C++
  26. UnrealEditor-SlateCore.dll!SPanel::PaintArrangedChildren(const FPaintArgs & Args, const FArrangedChildren & ArrangedChildren, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 31 C++
  27. UnrealEditor-SlateCore.dll!SPanel::OnPaint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 12 C++
  28. UnrealEditor-SlateCore.dll!SWidget::Paint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 1540 C++
  29. ...
  30. UnrealEditor-SlateCore.dll!SCompoundWidget::OnPaint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 46 C++
  31. UnrealEditor-Slate.dll!SBorder::OnPaint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 129 C++
  32. UnrealEditor-SlateCore.dll!SWidget::Paint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 1540 C++
  33. UnrealEditor-SlateCore.dll!SCompoundWidget::OnPaint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 46 C++
  34. UnrealEditor-SlateCore.dll!SWidget::Paint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 1540 C++
  35. UnrealEditor-SlateCore.dll!FSlateWindowElementList::FDeferredPaint::ExecutePaint(int LayerId, FSlateWindowElementList & OutDrawElements, const FSlateRect & MyCullingRect) Line 851 C++
  36. UnrealEditor-SlateCore.dll!FSlateWindowElementList::PaintDeferred(int LayerId, const FSlateRect & MyCullingRect) Line 876 C++
  37. UnrealEditor-SlateCore.dll!SWindow::PaintWindow(double CurrentTime, float DeltaTime, FSlateWindowElementList & OutDrawElements, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 2126 C++
  38. UnrealEditor-Slate.dll!FSlateApplication::DrawWindowAndChildren(const TSharedRef<SWindow,1> & WindowToDraw, FDrawWindowArgs & DrawWindowArgs) Line 1133 C++
  39. UnrealEditor-Slate.dll!FSlateApplication::DrawWindowAndChildren(const TSharedRef<SWindow,1> & WindowToDraw, FDrawWindowArgs & DrawWindowArgs) Line 1185 C++
  40. UnrealEditor-Slate.dll!FSlateApplication::PrivateDrawWindows(TSharedPtr<SWindow,1> DrawOnlyThisWindow) Line 1369 C++
  41. UnrealEditor-Slate.dll!FSlateApplication::DrawWindows() Line 1077 C++
  42. UnrealEditor-Slate.dll!FSlateApplication::TickAndDrawWidgets(float DeltaTime) Line 1657 C++
  43. UnrealEditor-Slate.dll!FSlateApplication::Tick(ESlateTickType TickType) Line 1513 C++
  44. UnrealEditor-Win64-DebugGame.exe!FEngineLoop::Tick() Line 5979 C++
  45. [Inline Frame] UnrealEditor-Win64-DebugGame.exe!EngineTick() Line 61 C++
  46. UnrealEditor-Win64-DebugGame.exe!GuardedMain(const wchar_t * CmdLine) Line 188 C++
  47. UnrealEditor-Win64-DebugGame.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 233 C++
  48. UnrealEditor-Win64-DebugGame.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 292 C++
  49. [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-197020 in the post.

0
Login to Vote

Backlogged
ComponentUE - Editor - Workflow Systems
Affects Versions5.2
CreatedOct 3, 2023
UpdatedJan 19, 2024
View Jira Issue