Description

The editor crashes when trying to undo a default class change for a child widget after that widget has been compiled.

This did not happen in 4.16, it appears to be a regression.

Steps to Reproduce
  1. Open the editor
  2. Create a new widget blueprint
  3. Name the widget blueprint "parent"
  4. Create a new widget blueprint
  5. Name the widget blueprint "UndoCrash"
  6. Open "Parent"
  7. Add "UndoCrash" to Parent's designer tab
  8. Compile and save
  9. Open "UndoCrash"
  10. Open the event graph
  11. Check "Is Focusable" so that it's true
  12. Click compile (compile and then undo this order is important)
  13. Use Ctrl+Z to undo

Result: The editor crashes when trying to undo the change
Expected: The change that was made would be undone

Callstack
Fatal error: [File:D:\Build\++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 2289] Objects have the same fully qualified name but different paths. New Object: REINST_UndoCrash_C_13 /Engine/Transient.World_4:Parent_C_5.WidgetTree_30.UndoCrash Existing Object: UndoCrash_C /Engine/Transient.World_4:Parent_C_5.WidgetTree_30.UndoCrash

UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
UE4Editor_CoreUObject!StaticAllocateObject() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2284]
UE4Editor_CoreUObject!StaticConstructObject_Internal() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:3121]
UE4Editor_CoreUObject!FDuplicateDataWriter::GetDuplicatedObject() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\serialization\duplicatedatawriter.cpp:145]
UE4Editor_CoreUObject!FDuplicateDataWriter::operator<<() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\serialization\duplicatedatawriter.cpp:67]
UE4Editor_CoreUObject!UObjectProperty::SerializeItem() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\propertyobject.cpp:64]
UE4Editor_CoreUObject!FPropertyTag::SerializeTaggedProperty() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\propertytag.cpp:188]
UE4Editor_CoreUObject!UStruct::SerializeTaggedProperties() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:1154]
UE4Editor_CoreUObject!UObject::SerializeScriptProperties() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\obj.cpp:1282]
UE4Editor_CoreUObject!UObject::Serialize() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\obj.cpp:1216]
UE4Editor_CoreUObject!StaticDuplicateObjectEx() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2019]
UE4Editor_UMG!UUserWidget::DuplicateAndInitializeFromWidgetTree() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\umg\private\userwidget.cpp:402]
UE4Editor_UMGEditor!FWidgetBlueprintEditor::UpdatePreview() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\umgeditor\private\widgetblueprinteditor.cpp:868]
UE4Editor_UMGEditor!FWidgetBlueprintEditor::RefreshPreview() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\umgeditor\private\widgetblueprinteditor.cpp:751]
UE4Editor_UMGEditor!FWidgetBlueprintEditor::OnBlueprintChangedImpl() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\umgeditor\private\widgetblueprinteditor.cpp:309]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(UBlueprint * __ptr64)>::Execute() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(UBlueprint * __ptr64)>::ExecuteIfSafe() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_Engine!TBaseMulticastDelegate<void,UBlueprint * __ptr64>::Broadcast() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937]
UE4Editor_UnrealEd!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\kismet2\blueprinteditorutils.cpp:2109]
UE4Editor_Kismet!FixSubObjectReferencesPostUndoRedo() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\kismet\private\blueprinteditormodule.cpp:164]
UE4Editor_UnrealEd!UEditorEngine::BroadcastPostUndo() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\editorserver.cpp:5074]
UE4Editor_UnrealEd!UEditorEngine::HandleTransactorUndo() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\editorserver.cpp:1185]
UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,TTypeWrapper<void> __cdecl(FUndoSessionContext,bool)>::Execute() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:766]
UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,void __cdecl(FUndoSessionContext,bool)>::ExecuteIfSafe() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:856]
UE4Editor_UnrealEd!TBaseMulticastDelegate<void,FUndoSessionContext,bool>::Broadcast() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937]
UE4Editor_UnrealEd!UTransBuffer::Undo() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\editortransaction.cpp:876]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_Slate!FUICommandList::ConditionalProcessCommandBindings() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:216]
UE4Editor_Slate!FUICommandList::ProcessCommandBindings() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:160]
UE4Editor_UnrealEd!FBaseToolkit::ProcessCommandBindings() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\toolkits\basetoolkit.cpp:74]
UE4Editor_UnrealEd!SStandaloneAssetEditorToolkitHost::OnKeyDown() [d:\build\++ue4+release-4.17+compile\sync\engine\source\editor\unrealed\private\toolkits\sstandaloneasseteditortoolkithost.cpp:324]
UE4Editor_Slate!<lambda_2afcd964c763e269e2d1a63f3a72f846>::operator()() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4771]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,<lambda_2afcd964c763e269e2d1a63f3a72f846> >() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:232]
UE4Editor_Slate!FEventRouter::RouteAlongFocusPath<FEventRouter::FBubblePolicy,<lambda_2afcd964c763e269e2d1a63f3a72f846>,FKeyEvent>() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:214]
UE4Editor_Slate!FSlateApplication::ProcessKeyDownEvent() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4769]
UE4Editor_Slate!FSlateApplication::OnKeyDown() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4681]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1553]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:2161]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:881]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:721]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:1009]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3151]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build\++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

0
Login to Vote

Cannot Reproduce
ComponentUE - Editor - UI Systems
Affects Versions4.17.14.184.21
Target Fix4.23
CreatedSep 25, 2017
ResolvedAug 12, 2019
UpdatedApr 16, 2021