Description

This is a trending crash coming out of the 4.18 release.

User Descriptions

  • I tried to call an Event Dispatcher (which is assigned in the Level Blueprint) in the Construction Script of the Blueprint
  • I created a Macro similar to the ForeachLoop and got an error that the Array Length Node had no Array Input. I connected the Macro Array Input tothe ArrayLength Input and got the Crash.

Source Context

1203       if (!bMathCall) // math call doesn't need context
 1204       {
 1205       // RValue property is used to clear value after Access Violation. See UObject::ProcessContextOpcod
 1206       // If the property from LHS is used, then the retured property (with CPF_ReturnParm) is cleared. But properties returned by ref are not cleared. 
 1207       UProperty* RValueProperty = Statement.LHS ? Statement.LHS->AssociatedVarProperty : nullptr;
 1208       CallContextWriter.TryStartContext(Statement.FunctionContext, /*bUnsafeToSkip=*/ bHasOutputValue, Statement.bIsInterfaceContext, RValueProperty);
 1209       }
 1210       
 1211       // Emit the call type
 1212       if (FunctionToCall->HasAnyFunctionFlags(FUNC_Delegate))
 1213       {
 1214       // @todo: Default delegate functions are no longer callable (and also now have mangled names.)  FindField will fail.
 1215 ***** check(false);
 1216       }
 1217       else if (bFinalFunction)
 1218       {
 1219       if (bMathCall)
 1220       {
 1221       Writer << EX_CallMath;
 1222       }
 1223       else
 1224       {
 1225       Writer << EX_FinalFunction;
 1226       }
 1227       // The function to call doesn't have a native index
 1228       Writer << FunctionToCall;
 1229       }
 1230       else
Steps to Reproduce

1. Create a blueprint based on actor

2. Add a Event Dispatcher to that actor

3 Place an instance of the new blueprint in a level

4. Open the level blueprint, drag the placed actor from the scene outliner in to the level blueprint

5. Try to call the event dispatcher function. Note that when using the compilation manager there is a function call entry with Delegate Signature appended to the event dispatchers name

6. Call this bad function call entry from the level blueprint, note crash

Callstack
Assertion failed: false [File:D:\Build\++UE4+Release-4.18+Compile\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompilerVMBackend.cpp] [Line: 1216]

UE4Editor_KismetCompiler!FScriptBuilderBase::EmitFunctionCall() [kismetcompilervmbackend.cpp:1216]
UE4Editor_KismetCompiler!FScriptBuilderBase::GenerateCodeForStatement() [kismetcompilervmbackend.cpp:1966]
UE4Editor_KismetCompiler!FKismetCompilerVMBackend::ConstructFunction() [kismetcompilervmbackend.cpp:2140]
UE4Editor_KismetCompiler!FKismetCompilerVMBackend::GenerateCodeFromClass() [kismetcompilervmbackend.cpp:2090]
UE4Editor_KismetCompiler!FKismetCompilerContext::CompileFunctions() [kismetcompiler.cpp:4032]
UE4Editor_Kismet!FBlueprintCompilationManagerImpl::FlushCompilationQueueImpl() [blueprintcompilationmanager.cpp:876]
UE4Editor_Kismet!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl() [blueprintcompilationmanager.cpp:199]
UE4Editor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() [kismet2.cpp:745]
UE4Editor_Kismet!FBlueprintEditor::Compile() [blueprinteditor.cpp:3181]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() [delegateinstancesimpl.h:327]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() [delegateinstancesimpl.h:434]
UE4Editor_Slate!FUICommandList::ExecuteAction() [uicommandlist.cpp:97]
UE4Editor_Slate!SToolBarButtonBlock::OnClicked() [stoolbarbuttonblock.cpp:300]
UE4Editor_Slate!TMemberFunctionCaller<SToolBarButtonBlock,FReply() [delegateinstanceinterface.h:165]
UE4Editor_Slate!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SToolBarButtonBlock,FReply() [tuple.h:497]
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl() [delegateinstancesimpl.h:327]
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() [delegatesignatureimpl.inl:537]
UE4Editor_Slate!SButton::OnMouseButtonUp() [sbutton.cpp:282]
UE4Editor_Slate!<lambda_1002768c627006711ef2f351a87ec0e7>::operator() [slateapplication.cpp:5263]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_1002768c627006711ef2f351a87ec0e7> >() [slateapplication.cpp:234]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [slateapplication.cpp:5252]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [slateapplication.cpp:5750]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [slateapplication.cpp:5730]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [windowsapplication.cpp:1725]
UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [windowsapplication.cpp:2171]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [windowsapplication.cpp:888]
UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [windowsapplication.cpp:725]
user32!UserCallWinProcCheckWow()
user32!DispatchMessageWorker()
UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [windowsplatformapplicationmisc.cpp:129]
UE4Editor!FEngineLoop::Tick() [launchengineloop.cpp:3220]
UE4Editor!GuardedMain() [launch.cpp:166]
UE4Editor!GuardedMainWrapper() [launchwindows.cpp:134]
UE4Editor!WinMain() [launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [exe_common.inl:253]
kernel32!BaseThreadInitThunk()
ntdll!RtlUserThreadStart()

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-51726 in the post.

1
Login to Vote

Fixed
ComponentUE - Gameplay
Affects Versions4.184.19
Target Fix4.19
Fix Commit3873614
Main Commit3990065
Release Commit3873914
CreatedOct 27, 2017
ResolvedFeb 6, 2018
UpdatedApr 27, 2018