Description

Mousing over an array input inside a Blueprint function can lead to a crash. For this to occur, the first parameter of the function must be a User Defined Struct. 

Steps to Reproduce
  • Create a Blueprint function that takes two parameters
    • Param1 is a user defined struct. Default bool value works.
    • Param2 is an array of some type. Confirmed with ints and names
  • Place a breakpoint on the function and call it.
  • PIE
  • Mouse over the array input to Param2 - notice the text representing the data is exported and the tool tip works as expected
  • Step into the function
  • Mouse over the Param2 pin of the function entry node - notice the tool tip does not display the data inside the array
  • This will often lead to a crash and FArrayProperty::ExportTextItem fails to correctly initialize the DefaultArrayHelper
Callstack
UE4Editor-CoreUObject.dll!TProperty_Numeric<int>::GetNumericPropertyValueToString(const void * Data) Line 1472 C++
 UE4Editor-CoreUObject.dll!FNumericProperty::ExportTextItem(FString & ValueStr, const void * PropertyValue, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 131 C++
> UE4Editor-CoreUObject.dll!FArrayProperty::ExportTextInnerItem(FString & ValueStr, FProperty * Inner, const void * PropertyValue, int PropertySize, const void * DefaultValue, int DefaultSize, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 405 C++
 UE4Editor-CoreUObject.dll!FArrayProperty::ExportTextItem(FString & ValueStr, const void * PropertyValue, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 381 C++
 UE4Editor-CoreUObject.dll!FProperty::ExportText_Direct(FString & ValueStr, const void * Data, const void * Delta, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 786 C++
 [Inline Frame] UE4Editor-UnrealEd.dll!FProperty::ExportText_InContainer(int Data, FString & Delta, const void * Parent, const void *) Line 347 C++
 UE4Editor-UnrealEd.dll!FKismetDebugUtilities::GetWatchText(FString & OutWatchText, UBlueprint * Blueprint, UObject * ActiveObject, const UEdGraphPin * WatchPin) Line 1130 C++
 UE4Editor-BlueprintGraph.dll!UK2Node::GetPinHoverText(const UEdGraphPin & Pin, FString & HoverTextOut) Line 1802 C++
 UE4Editor-GraphEditor.dll!SGraphPin::GetTooltipText() Line 1164 C++
 [Inline Frame] UE4Editor-GraphEditor.dll!TMemberFunctionCaller<SGraphPin,FText (__cdecl SGraphPin::*)(void)const>::operator()() Line 156 C++
 [Inline Frame] UE4Editor-GraphEditor.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int>>::ApplyAfter(TMemberFunctionCaller<SGraphPin,FText (__cdecl SGraphPin::*)(void)const> &&) Line 285 C++
 UE4Editor-GraphEditor.dll!TBaseSPMethodDelegateInstance<1,SGraphPin,0,FText __cdecl(void)>::Execute() Line 298 C++
 [Inline Frame] UE4Editor-Slate.dll!TBaseDelegate<FText>::Execute() Line 586 C++
 UE4Editor-Slate.dll!TAttribute<FText>::Get() Line 137 C++
 UE4Editor-Slate.dll!SToolTip::IsEmpty() Line 87 C++
 UE4Editor-Slate.dll!FSlateUser::UpdateTooltip(const FMenuStack & MenuStack, bool bCanSpawnNewTooltip) Line 1135 C++
 UE4Editor-Slate.dll!FSlateApplication::ProcessMouseMoveEvent(const FPointerEvent & MouseEvent, bool bIsSynthetic) Line 5407 C++
 UE4Editor-Slate.dll!FSlateApplication::OnMouseMove() Line 5354 C++
 UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2000 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 2414 C++
 UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1638 C++
 UE4Editor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 789 C++
 [External Code] 
 UE4Editor-ApplicationCore.dll!FWindowsApplication::PumpMessages(const float TimeDelta) Line 2426 C++
 UE4Editor-Slate.dll!FSlateApplication::TickPlatform(float DeltaTime) Line 1380 C++
 UE4Editor-Slate.dll!FSlateApplication::Tick(ESlateTickType TickType) Line 1356 C++
 UE4Editor-Slate.dll!FSlateApplication::EnterDebuggingMode() Line 3320 C++
 UE4Editor-UnrealEd.dll!FKismetDebugUtilities::AttemptToBreakExecution(UBlueprint * BlueprintObj, const UObject * ActiveObject, const FFrame & StackFrame, const FBlueprintExceptionInfo & Info, UEdGraphNode * NodeStoppedAt, int DebugOpcodeOffset) Line 722 C++
 UE4Editor-UnrealEd.dll!FKismetDebugUtilities::OnScriptException(const UObject * ActiveObject, const FFrame & StackFrame, const FBlueprintExceptionInfo & Info) Line 352 C++
 [Inline Frame] UE4Editor-UnrealEd.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int>>::ApplyAfter(void(*)(const UObject *, const FFrame &, const FBlueprintExceptionInfo &) &) Line 285 C++
 [Inline Frame] UE4Editor-UnrealEd.dll!TBaseStaticDelegateInstance<TTypeWrapper<void> __cdecl(UObject const *,FFrame const &,FBlueprintExceptionInfo const &)>::Execute(const UObject *) Line 806 C++
 UE4Editor-UnrealEd.dll!TBaseStaticDelegateInstance<void __cdecl(UObject const *,FFrame const &,FBlueprintExceptionInfo const &)>::ExecuteIfSafe(const UObject * <Params_0>, const FFrame & <Params_1>, const FBlueprintExceptionInfo & <Params_2>) Line 859 C++
 [Inline Frame] UE4Editor-CoreUObject.dll!TBaseMulticastDelegate<void,UObject const *,FFrame const &,FBlueprintExceptionInfo const &>::Broadcast(const UObject *) Line 1013 C++
 UE4Editor-CoreUObject.dll!FBlueprintCoreDelegates::ThrowScriptException(const UObject * ActiveObject, const FFrame & StackFrame, const FBlueprintExceptionInfo & Info) Line 184 C++
 UE4Editor-CoreUObject.dll!UObject::execBreakpoint(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 2195 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!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>(UObject * Context, UFunction * Function, FFrame & Stack, void * const Z_Param__Result, void(*)(UObject *, FFrame &, void *) ExecFtor) Line 828 C++
 UE4Editor-CoreUObject.dll!ProcessLocalFunction(UObject * Context, UFunction * Fn, FFrame & Stack, void * const Z_Param__Result) Line 1058 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!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>(UObject * Context, UFunction * Function, FFrame & Stack, void * const Z_Param__Result, void(*)(UObject *, FFrame &, void *) ExecFtor) Line 828 C++
 UE4Editor-CoreUObject.dll!ProcessLocalFunction(UObject * Context, UFunction * Fn, FFrame & Stack, void * const Z_Param__Result) Line 1058 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 5492 C++
 UE4Editor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 1916 C++
 UE4Editor-Engine.dll!AActor::ProcessEvent(UFunction * Function, void * Parameters) Line 797 C++
 UE4Editor-Engine.dll!AActor::BeginPlay() Line 3495 C++
 UE4Editor-Engine.dll!AActor::DispatchBeginPlay(bool bFromLevelStreaming) Line 3409 C++
 UE4Editor-Engine.dll!AWorldSettings::NotifyBeginPlay() Line 246 C++
 UE4Editor-Engine.dll!AGameStateBase::HandleBeginPlay() Line 205 C++
 UE4Editor-Engine.dll!UWorld::BeginPlay() Line 4126 C++
 UE4Editor-Engine.dll!UGameInstance::StartPlayInEditorGameInstance(ULocalPlayer * LocalPlayer, const FGameInstancePIEParameters & Params) Line 465 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::CreateInnerProcessPIEGameInstance(FRequestPlaySessionParams & InParams, const FGameInstancePIEParameters & InPIEParameters, int InPIEInstanceIndex) Line 2778 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::OnLoginPIEComplete_Deferred(int LocalUserNum, bool bWasSuccessful, FString ErrorString, FPieLoginStruct DataStruct) Line 1472 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::CreateNewPlayInEditorInstance(FRequestPlaySessionParams & InRequestParams, const bool bInDedicatedInstance, const EPlayNetMode InNetMode) Line 1711 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::StartPlayInEditorSession(FRequestPlaySessionParams & InRequestParams) Line 2572 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::StartQueuedPlaySessionRequestImpl() Line 1088 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::StartQueuedPlaySessionRequest() Line 1017 C++
 UE4Editor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1596 C++
 UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 427 C++
 UE4Editor.exe!FEngineLoop::Tick() Line 4701 C++
 [Inline Frame] UE4Editor.exe!EngineTick() Line 62 C++
 UE4Editor.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 173 C++
 UE4Editor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 252 C++

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint Editor
Affects Versions4.23.14.24.24.25
Target Fix4.25
Fix Commit12117076
Main Commit12113008
Release Commit12117076
CreatedMar 3, 2020
ResolvedMar 10, 2020
UpdatedJun 11, 2021
Pull Requests
8141 - rcowsill