Description

Clicking the Add Variable button in a Struct that is referenced as two inputs in a function that is called in an Actor Blueprint's Construction Script causes a crash. This does not occur in the Event Graph, nor does it occur if the function only uses the Struct input once.

Test project attached. To reproduce, open both the Actor Blueprint and the Struct, then click the Add Variable button in the Struct.

Crash Report:
[Link Removed]

Call Stack:
UE4Editor_CoreUObject!FFrame::Serialize() scriptcore.cpp:249
UE4Editor_CoreUObject!UObject::execStructConst() scriptcore.cpp:1906
UE4Editor_CoreUObject!UObject::CallFunction() scriptcore.cpp:558
UE4Editor_CoreUObject!UObject::ProcessInternal() scriptcore.cpp:673
UE4Editor_CoreUObject!UFunction::Invoke() class.cpp:4125
UE4Editor_CoreUObject!UObject::ProcessEvent() scriptcore.cpp:1023
UE4Editor_Engine!AActor::ProcessEvent() actor.cpp:520
UE4Editor_Engine!AActor::ProcessUserConstructionScript() actorconstruction.cpp:520
UE4Editor_Engine!AActor::ExecuteConstruction() actorconstruction.cpp:468
UE4Editor_Engine!AActor::RerunConstructionScripts() actorconstruction.cpp:347
UE4Editor_Engine!AActor::PostEditChangeProperty() actoreditor.cpp:113
UE4Editor_CoreUObject!UObject::PostEditChange() obj.cpp:286
UE4Editor_UnrealEd!FBlueprintEditorUtils::PostEditChangeBlueprintActors() blueprinteditorutils.cpp:6972
UE4Editor_Kismet!FBlueprintEditor::OnBlueprintChangedImpl() blueprinteditor.cpp:2949
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:282
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() delegateinstancesimpl_variadics.inl:388
UE4Editor_Engine!TBaseMulticastDelegate<void,UBlueprint * __ptr64>::Broadcast() delegatesignatureimpl_variadics.inl:1031
UE4Editor_UnrealEd!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() blueprinteditorutils.cpp:2083
UE4Editor_KismetCompiler!FUserDefinedStructureCompilerUtils::CompileStruct() userdefinedstructurecompilerutils.cpp:366
UE4Editor_KismetCompiler!FKismet2CompilerModule::CompileStructure() kismetcompilermodule.cpp:128
UE4Editor_UnrealEd!FStructureEditorUtils::CompileStructure() structureeditorutils.cpp:510
UE4Editor_UnrealEd!FStructureEditorUtils::AddVariable() structureeditorutils.cpp:273
UE4Editor_Kismet!FUserDefinedStructureLayout::OnAddNewField() userdefinedstructureeditor.cpp:332
UE4Editor_Kismet!TMemberFunctionCaller<FUserDefinedStructureLayout,FReply() delegateinstanceinterface_variadics.h:161
UE4Editor_Kismet!TTupleImpl<TIntegerSequence<> >::ApplyAfter_ExplicitReturnType<FReply,TMemberFunctionCaller<FUserDefinedStructureLayout,FReply() tuple.h:113
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FUserDefinedStructureLayout,0,FReply __cdecl() delegateinstancesimpl_variadics.inl:282
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() delegatesignatureimpl_variadics.inl:440
UE4Editor_Slate!SButton::OnMouseButtonUp() sbutton.cpp:225
UE4Editor_Slate!<lambda_de96dc3471181973108233c6db1f9843>::operator() slateapplication.cpp:4170
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_de96dc3471181973108233c6db1f9843> >() slateapplication.cpp:212
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() slateapplication.cpp:4173
UE4Editor_Slate!FSlateApplication::OnMouseUp() slateapplication.cpp:4133
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() windowsapplication.cpp:1406
UE4Editor_Core!FWindowsApplication::DeferMessage() windowsapplication.cpp:1711
UE4Editor_Core!FWindowsApplication::ProcessMessage() windowsapplication.cpp:706
UE4Editor_Core!FWindowsApplication::AppWndProc() windowsapplication.cpp:628
user32!<Unknown>
user32!<Unknown>
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() windowsplatformmisc.cpp:792
UE4Editor!FEngineLoop::Tick() launchengineloop.cpp:2323
UE4Editor!GuardedMain() launch.cpp:142
UE4Editor!GuardedMainWrapper() launchwindows.cpp:126
UE4Editor!WinMain() launchwindows.cpp:200

Reproduced in 4.7.6, 4.8.1, and Main (//depot/UE4/Promotable-CL-2601051)

Steps to Reproduce

1. Open a new project
2. Create a new Struct
3. Create a new Actor Blueprint
4. Add a new function
5. Give the function two inputs of the new Struct's type
6. Call the function in the Construction Script
7. With the Actor Blueprint still open in a separate tab, click the New Variable button in the Struct

Result:
Crash

Have Comments or More Details?

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

1
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.8.14.9
Target Fix4.9
Fix Commit2614897
Release Commit2618144
CreatedJun 28, 2015
ResolvedJul 9, 2015
UpdatedApr 27, 2018