Description

The linked project crashes on open after attempting to implement an interface and a duplicate of that same interface with different function names. This has not been reproduced in a clean project, however the user has provided additional information on this issue:

"The engine asserts in UObject::SetLinker() [1]. This is called because the engine wants to rename [2] an object (an interface function / a graph). This is strange because there should be no need to rename the function at this point in time! The ConformInterfaceByGUID() [3] function will rename interface functions if their GUIDs match but their name does not match. As it turns out there is the same "InterfaceGuid" for different interface functions. E.g. "Attack_BPI::IsAttackable" has the same GUID as "Skin_BPI::IsSkinnable" (1345967241-1227943219-3811549834-934607715).

I then reverted the project to the previous working state and put a conditional breakpoint into the FGuid::operator<<() to break whenever that above mentioned GUID is loaded. Then I duplicated the "Attack_BPI" blueprint-interface via the editor's context-menu and the breakpoint did hit! So it seems the GUID of the interface functions are copied to the duplicated blueprint-interface but they would need to be initialized with a new unique GUID instead.

We tried to reproduce the issue using a blank blueprint-only project but did not succeed, so "simply" duplicating a blueprint-interface does not always make the engine assert when restarting the editor and loading the project."

Steps to Reproduce

1. Open the project: [Link Removed]
2. Go into the NPCs folder
3. Duplicate Attack_BPI
4. Go into Attack_BPI2 and change the function names
5. Open NPC_Parent
6. Add the Attack_BPI2 interface
7. Save and Compile the blueprint
8. Restart the project

Result: Project crashes

Expected: Project would open successfully

Callstack
UE4Editor_CoreUObject!UObject::SetLinker() uobjectlinker.cpp:102 
UE4Editor_CoreUObject!FLinkerLoad::Detach() linkerload.cpp:4188 
UE4Editor_CoreUObject!FLinkerManager::ResetLoaders() linkermanager.cpp:112 
UE4Editor_CoreUObject!UObject::Rename() obj.cpp:181 
UE4Editor_BlueprintGraph!UK2Node::RewireOldPinsToNewPins() k2node.cpp:644 
UE4Editor_BlueprintGraph!UK2Node::ReconstructNode() k2node.cpp:410 
UE4Editor_BlueprintGraph!UEdGraphSchema_K2::ReconstructNode() edgraphschema_k2.cpp:3971 
UE4Editor_UnrealEd!FBlueprintEditorUtils::RefreshGraphNodes() blueprinteditorutils.cpp:594 
UE4Editor_UnrealEd!ConformInterfaceByGUID() blueprinteditorutils.cpp:5820 
UE4Editor_UnrealEd!FBlueprintEditorUtils::ConformImplementedInterfaces() blueprinteditorutils.cpp:6024 
UE4Editor_Engine!UBlueprint::PostLoad() blueprint.cpp:575 
UE4Editor_CoreUObject!UObject::ConditionalPostLoad() obj.cpp:726 
UE4Editor_CoreUObject!EndLoad() uobjectglobals.cpp:1424 
UE4Editor_CoreUObject!LoadPackageInternal() uobjectglobals.cpp:1143 
UE4Editor_CoreUObject!LoadPackageInternal() uobjectglobals.cpp:1258 
UE4Editor_UnrealEd!UEditorEngine::Map_Load() editorserver.cpp:2392 
UE4Editor_UnrealEd!UEditorEngine::HandleMapCommand() editorserver.cpp:5946 
UE4Editor_UnrealEd!UEditorEngine::Exec() editorserver.cpp:5436 
UE4Editor_UnrealEd!UUnrealEdEngine::Exec() unrealedsrv.cpp:744 
UE4Editor_UnrealEd!FEditorFileUtils::LoadMap() filehelpers.cpp:2070 
UE4Editor_UnrealEd!FEditorFileUtils::LoadDefaultMapAtStartup() filehelpers.cpp:3283 
UE4Editor_UnrealEd!FUnrealEdMisc::OnInit() unrealedmisc.cpp:299 
UE4Editor_UnrealEd!EditorInit() unrealed.cpp:86 
UE4Editor!GuardedMain() launch.cpp:133 
UE4Editor!GuardedMainWrapper() launchwindows.cpp:126 
UE4Editor!WinMain() launchwindows.cpp:200 
UE4Editor!__scrt_common_main_seh() exe_common.inl:264 
kernel32!<Unknown> 
ntdll!<Unknown> 

Have Comments or More Details?

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

1
Login to Vote

Cannot Reproduce
ComponentUE - Gameplay - Blueprint
Affects Versions4.11.2
Target Fix4.16
Fix Commit3261615
CreatedApr 25, 2016
ResolvedJan 18, 2017
UpdatedFeb 5, 2017