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 existingAnswerHub thread and let us know what's up.

0
Login to Vote

Unresolved
ComponentTools - UMG
Affects Versions4.17.14.184.21
CreatedSep 25, 2017
UpdatedApr 12, 2019