Description

Editor can assert when changing the signature of an editor authored Blueprint Library Function (FuncA) if that function is called from a Blueprint Library Function (FuncB) via an actor's construction script. (ConstructionScript->FuncA->FuncB)

Steps to Reproduce
  1. Create two editor authored blueprint function libraries: FL_A and FL_B
  2. In FL_B, create a function which takes an int as an input
  3. Compile FL_B
  4. In FL_A, create a function which takes an int as an input and calls FL_B's function passing its own int input to FL_B's int input
  5. Compile FL_A
  6. Create a blueprint actor
  7. In the blueprint actor's construction script, call FL_A's function; the value of the int argument doesn't matter
  8. Compile the blueprint actor
  9. Change FL_B's input from an int to a bool
  10. Compile FL_B
  11. Compile FL_A without fixing the error

Compiling FL_A during the last step will trigger the blueprint actor's construction script and cause the editor to crash:

Error: Failed to find function NewFunction_0 in FL_A_C /Game/Tests/Temp/FL_A.Default__FL_A_C

Callstack

> [Inline Frame] UE4Editor-CoreUObject.dll!UObject::FindFunctionChecked::_l10::<lambda_fb1cc2dd664405449bfe59d3e487228e>:[Image Removed])::_l6::<lambda_9d4a901fd681c7e5dd45948c77c45ac7>::operator()() Line 1238 C++
[Inline Frame] UE4Editor-CoreUObject.dll!UObject::FindFunctionChecked::__l10::<lambda_fb1cc2dd664405449bfe59d3e487228e>::operator()(const FLogCategoryLogScriptCore &) Line 1238 C++
UE4Editor-CoreUObject.dll!UObject::FindFunctionChecked(FName InName) Line 1238 C++
UE4Editor-CoreUObject.dll!UObject::execLocalVirtualFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 2915 C++
[Inline Frame] UE4Editor-CoreUObject.dll!FFrame::Step(UObject *) Line 338 C++
UE4Editor-CoreUObject.dll!UObject::ProcessContextOpcode(FFrame & Stack, void * const Z_Param__Result, bool bCanFailSilently) Line 2796 C++
[Inline Frame] UE4Editor-CoreUObject.dll!FFrame::Step(UObject *) Line 338 C++
UE4Editor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 997 C++
UE4Editor-CoreUObject.dll!UObject::ProcessInternal(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1085 C++
UE4Editor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 5542 C++
UE4Editor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 1916 C++
UE4Editor-Engine.dll!AActor::ProcessEvent(UFunction * Function, void * Parameters) Line 798 C++
UE4Editor-Engine.dll!AActor::ProcessUserConstructionScript() Line 880 C++
UE4Editor-Engine.dll!AActor::ExecuteConstruction(const FTransform & Transform, const FRotationConversionCache * TransformRotationCache, const FComponentInstanceDataCache * InstanceDataCache, bool bIsDefaultTransform) Line 796 C++
UE4Editor-Engine.dll!AActor::RerunConstructionScripts() Line 514 C++
UE4Editor-Engine.dll!AActor::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) Line 125 C++
UE4Editor-CoreUObject.dll!UObject::PostEditChange() Line 338 C++
UE4Editor-UnrealEd.dll!FBlueprintEditorUtils::PostEditChangeBlueprintActors(UBlueprint * Blueprint, bool bComponentEditChange) Line 8260 C++
UE4Editor-Kismet.dll!FBlueprintEditor::OnBlueprintChangedImpl(UBlueprint * InBlueprint, bool bIsJustBeingCompiled) Line 3386 C++
[Inline Frame] UE4Editor-Kismet.dll!TMemberFunctionCaller<FBlueprintEditor,void (__cdecl FBlueprintEditor::*)(UBlueprint *)>::operator()(UBlueprint * &) Line 156 C++
[Inline Frame] UE4Editor-Kismet.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter(TMemberFunctionCaller<FBlueprintEditor,void (__cdecl FBlueprintEditor::*)(UBlueprint *)> &&) Line 272 C++
[Inline Frame] UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(UBlueprint *)>::Execute(UBlueprint *) Line 298 C++
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(UBlueprint *)>::ExecuteIfSafe(UBlueprint * <Params_0>) Line 374 C++
UE4Editor-Engine.dll!TBaseMulticastDelegate<void,UBlueprint *>::Broadcast(UBlueprint * <Params_0>) Line 1013 C++
UE4Editor-Kismet.dll!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl(const FBPCompileRequestInternal & Request) Line 316 C++
UE4Editor-Kismet.dll!FBlueprintCompilationManager::CompileSynchronously(const FBPCompileRequest & Request) Line 3040 C++
UE4Editor-UnrealEd.dll!FKismetEditorUtilities::CompileBlueprint(UBlueprint * BlueprintObj, EBlueprintCompileOptions CompileFlags, FCompilerResultsLog * pResults) Line 754 C++
UE4Editor-Kismet.dll!FBlueprintEditor::Compile() Line 3474 C++
[Inline Frame] UE4Editor-Kismet.dll!TMemberFunctionCaller<FBlueprintEditor,void (__cdecl FBlueprintEditor::*)(void)>::operator()() Line 156 C++
[Inline Frame] UE4Editor-Kismet.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter(TMemberFunctionCaller<FBlueprintEditor,void (__cdecl FBlueprintEditor::*)(void)> &&) Line 272 C++
[Inline Frame] UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() Line 298 C++
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() Line 374 C++
UE4Editor-Slate.dll!FUICommandList::ExecuteAction(const TSharedRef<FUICommandInfo const ,0> InUICommandInfo) Line 102 C++
UE4Editor-Slate.dll!SToolBarButtonBlock::OnClicked() Line 303 C++
[Inline Frame] UE4Editor-Slate.dll!TMemberFunctionCaller<SToolBarButtonBlock,FReply (__cdecl SToolBarButtonBlock::*)(void)>::operator()() Line 156 C++
[Inline Frame] UE4Editor-Slate.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter(TMemberFunctionCaller<SToolBarButtonBlock,FReply (__cdecl SToolBarButtonBlock::*)(void)> &&) Line 272 C++
UE4Editor-Slate.dll!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl(void)>::Execute() Line 298 C++
[Inline Frame] UE4Editor-Slate.dll!TBaseDelegate<FReply>::Execute() Line 586 C++
UE4Editor-Slate.dll!SButton::ExecuteOnClick() Line 385 C++
UE4Editor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 304 C++
[Inline Frame] UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda_6c1f6b862bcfb82ea6dcab28fbcc9463>::operator()(const FArrangedWidget &) Line 4689 C++
UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_6c1f6b862bcfb82ea6dcab28fbcc9463> >(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_6c1f6b862bcfb82ea6dcab28fbcc9463> & Lambda) Line 372 C++
UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 4675 C++
UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5198 C++
UE4Editor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5166 C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2133 C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2585 C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1809 C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 852 C++

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-99676 in the post.

0
Login to Vote

Unresolved
ComponentGameplay - Blueprint
Affects Versions4.25.3
Target Fix4.26
CreatedSep 15, 2020
UpdatedSep 16, 2020