Editor crash deleting Blueprint inputs

Unreal 4.6.0

I can easily reproduce this crash… edit an Animation Blueprint with a Custom Event node that is defined with a MyCharacter input parameter… place an instance of the event in the graph and link the input to something… select the Custom Event node and press the (X) button to delete the input… the editor immediately crashes.

The work-around is to delete the calling node(s) before attempting to remove the input, then recreate the call node. I think the issue only occurs if the input type is a reference and not a simple “bool” etc.

KernelBase.dll!000007fefd2f3ca2()	Unknown

UE4Editor-Core.dll!StaticFailDebug(const wchar_t * Error, const char * File, int Line, const wchar_t * Description, bool bIsEnsure) Line 190 C++
UE4Editor-Core.dll!FDebug::AssertFailed(const char * Expr, const char * File, int Line, const wchar_t * Format, …) Line 224 C++
UE4Editor-BlueprintGraph.dll!UK2Node_EditablePinBase::RemoveUserDefinedPin(TSharedPtr<FUserPinInfo,0> PinToRemove) Line 51 C++
UE4Editor-Kismet.dll!FBlueprintGraphArgumentLayout::OnRemoveClicked() Line 1828 C++
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintGraphArgumentLayout,0,TTypeWrapper __cdecl(void)>::Execute() Line 283 C++
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintGraphArgumentLayout,0,void __cdecl(void)>::ExecuteIfSafe() Line 381 C++
UE4Editor-PropertyEditor.dll!PropertyCustomizationHelpers::SPropertyEditorButton::OnClick() Line 66 C++
UE4Editor-PropertyEditor.dll!TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::)(void) __ptr64>::operator()<>() Line 161 C++
UE4Editor-PropertyEditor.dll!TTupleImpl<TIntegerSequence<> >::ApplyAfter_ExplicitReturnType<FReply,TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::
)(void) __ptr64> >(TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::*)(void)> && Func) Line 113 C++
UE4Editor-PropertyEditor.dll!TBaseSPMethodDelegateInstance<0,PropertyCustomizationHelpers::SPropertyEditorButton,0,FReply __cdecl(void)>::Execute() Line 283 C++
UE4Editor-Slate.dll!TBaseDelegate::Execute() Line 439 C++
UE4Editor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 228 C++
UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent::__l18::(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 3857 C++
UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FReply (const FArrangedWidget &, const FPointerEvent &) >(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::ProcessMouseButtonUpEvent::l18::FReply (const FArrangedWidget &, const FPointerEvent &) & Lambda) Line 208 C++
UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(FPointerEvent & MouseEvent) Line 3860 C++
UE4Editor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button) Line 3821 C++
UE4Editor-Core.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1361 C++
UE4Editor-Core.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 1657 C++
* hwnd, unsigned int msg, unsigned int64 wParam, int64 lParam) Line 742 C++
* hwnd, unsigned int msg, unsigned int64 wParam, int64 lParam) Line 604 C++
[External Code]
UE4Editor-Core.dll!FWindowsPlatformMisc::PumpMessages(bool bFromMainLoop) Line 774 C++
UE4Editor.exe!FEngineLoop::Tick() Line 2193 C++
UE4Editor.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE
* hInInstance, HINSTANCE
* hPrevInstance, int nCmdShow) Line 131 C++
* hInInstance, HINSTANCE
* hPrevInstance, char * __formal, int nCmdShow) Line 191 C++
[External Code]

Looks like this is happening because removing the pin marks it as RF_PendingKill (mark this object for GC), and the function setting that flag expects the pin object to not be marked with RF_RootSet (don’t GC this object).

I’m guessing that pin objects are marked RF_RootSet so that they won’t be GC-ed before they can be referenced in a graph, perhaps?

Hi ,

You mention you experience this in 4.6.0. I’ve been unable to reproduce this issue in UE 4.6.1. Try updating and let me know if you still experience this issue in 4.6.1.