Description

If a project from UE 4.27 or earlier has a blueprint with a reroute node dangling (no outgoing connection) from a Custom Event Node's delegate pin (red), this blueprint will crash when loaded in UE 5.0 and up, due to failing assertion:

Assertion failed: OutputPin->LinkedTo.Num() > 0 [File:D:\build\++UE5\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompiler.cpp] [Line: 326]  
Steps to Reproduce
  • Create a UE 4.27 project
  • Create a blueprint BP_Test and open it
  • Add a CustomEventNode
  • Drag a reroute node from the DelegateOutPin (red pin)
  • Don't connect the reroute node to anything else
  • Close project
  • Change the project to any UE 5.0 to 5.3
  • Open the project and open the blueprint
  • Observe: Crashes on assertion that the reroute node has linked pins to the outgoing pin
Callstack

Callstack from UE 5.3

>    [Inline Frame] UnrealEditor-KismetCompiler.dll!Cast(UEdGraphNode *) Line 87    C++
     UnrealEditor-KismetCompiler.dll!UE::KismetCompiler::Private::GetLinkedDelegateSignature(UK2Node * NodeWithDelegate) Line 321    C++
     UnrealEditor-KismetCompiler.dll!UE::KismetCompiler::Private::MatchNodesToDelegateSignatures(UBlueprint * BP) Line 424    C++
     UnrealEditor-Kismet.dll!FBlueprintCompilationManagerImpl::FlushCompilationQueueImpl(bool bSuppressBroadcastCompiled, TArray<UBlueprint *,TSizedDefaultAllocator<32>> * BlueprintsCompiled, TArray<UBlueprint *,TSizedDefaultAllocator<32>> * BlueprintsCompiledOrSkeletonCompiled, FUObjectSerializeContext * InLoadContext) Line 939    C++
     UnrealEditor-Kismet.dll!FBlueprintCompilationManager::FlushCompilationQueue(FUObjectSerializeContext * InLoadContext) Line 3472    C++
     UnrealEditor-CoreUObject.dll!FScopedClassDependencyGather::~FScopedClassDependencyGather() Line 486    C++
     UnrealEditor-CoreUObject.dll!FLinkerLoad::CreateExport(int Index) Line 5347    C++
     UnrealEditor-CoreUObject.dll!FLinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 3881    C++
     UnrealEditor-CoreUObject.dll!FLinkerLoad::LoadAllObjects(bool bForcePreload) Line 4059    C++
     UnrealEditor-CoreUObject.dll!LoadPackageInternal(UPackage * InOuter, const FPackagePath & PackagePath, unsigned int LoadFlags, FLinkerLoad * ImportLinker, FArchive * InReaderOverride, const FLinkerInstancingContext * InstancingContext, const FPackagePath * DiffPackagePath) Line 1833    C++
     UnrealEditor-CoreUObject.dll!LoadPackage(UPackage * InOuter, const FPackagePath & PackagePath, unsigned int LoadFlags, FArchive * InReaderOverride, const FLinkerInstancingContext * InstancingContext, const FPackagePath * DiffPackagePath) Line 2014    C++
     UnrealEditor-CoreUObject.dll!LoadPackage(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FArchive * InReaderOverride, const FLinkerInstancingContext * InstancingContext) Line 1987    C++
     UnrealEditor-ContentBrowserAssetDataSource.dll!FAssetData::FastGetAsset(bool bLoad, TSet<FName,DefaultKeyFuncs<FName,0>,FDefaultSetAllocator> LoadTags) Line 516    C++
     [Inline Frame] UnrealEditor-ContentBrowserAssetDataSource.dll!FAssetData::GetAsset(TSet<FName,DefaultKeyFuncs<FName,0>,FDefaultSetAllocator>) Line 549    C++
     UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditOrPreviewAssetFileItems(TArrayView<TSharedRef<FContentBrowserAssetFileItemDataPayload const ,1> const ,int> InAssetPayloads, EAssetTypeActivationMethod::Type ActivationMethod, const EAssetTypeActivationOpenedMethod OpenedMethod) Line 361    C++
     UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditOrPreviewItems(IAssetTools * InAssetTools, const UContentBrowserDataSource * InOwnerDataSource, TArrayView<FContentBrowserItemData const ,int> InItems, EAssetTypeActivationMethod::Type ActivationMethod, EAssetTypeActivationOpenedMethod OpenedMethod) Line 417    C++
     [Inline Frame] UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditItems(IAssetTools *) Line 424    C++
     UnrealEditor-ContentBrowserAssetDataSource.dll!UContentBrowserAssetDataSource::BulkEditItems(TArrayView<FContentBrowserItemData const ,int> InItems) Line 2200    C++
     UnrealEditor-ContentBrowser.dll!SContentBrowser::OnItemsActivated(TArrayView<FContentBrowserItem const ,int> ActivatedItems, EAssetTypeActivationMethod::Type ActivationMethod) Line 3141    C++
     [Inline Frame] UnrealEditor-ContentBrowser.dll!Invoke(void(SContentBrowser::*)(TArrayView<FContentBrowserItem const ,int>, EAssetTypeActivationMethod::Type)) Line 66    C++
     [Inline Frame] UnrealEditor-ContentBrowser.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SContentBrowser::*)(TArrayView<FContentBrowserItem const ,int>, EAssetTypeActivationMethod::Type) &) Line 311    C++
     UnrealEditor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SContentBrowser,1,void __cdecl(TArrayView<FContentBrowserItem const ,int>,enum EAssetTypeActivationMethod::Type),FDefaultDelegateUserPolicy>::Execute(TArrayView<FContentBrowserItem const ,int> <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 281    C++
     [Inline Frame] UnrealEditor-ContentBrowser.dll!TDelegate<void __cdecl(TArrayView<FContentBrowserItem const ,int>,enum EAssetTypeActivationMethod::Type),FDefaultDelegateUserPolicy>::Execute(TArrayView<FContentBrowserItem const ,int>) Line 549    C++
     UnrealEditor-ContentBrowser.dll!SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<FAssetViewItem,1> AssetItem) Line 4081    C++
     [Inline Frame] UnrealEditor-ContentBrowser.dll!Invoke(void(SAssetView::*)(TSharedPtr<FAssetViewItem,1>)) Line 66    C++
     [Inline Frame] UnrealEditor-ContentBrowser.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SAssetView::*)(TSharedPtr<FAssetViewItem,1>) &) Line 311    C++
     UnrealEditor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SAssetView,1,void __cdecl(TSharedPtr<FAssetViewItem,1>),FDefaultDelegateUserPolicy>::ExecuteIfSafe(TSharedPtr<FAssetViewItem,1> <Params_0>) Line 298    C++
     UnrealEditor-ContentBrowser.dll!TDelegate<void __cdecl(TSharedPtr<FAssetViewItem,1>),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>(TSharedPtr<FAssetViewItem,1> <Params_0>) Line 570    C++
     UnrealEditor-ContentBrowser.dll!SListView<TSharedPtr<FAssetViewItem,1>>::Private_OnItemDoubleClicked(TSharedPtr<FAssetViewItem,1> TheItem) Line 1122    C++
     UnrealEditor-ContentBrowser.dll!STableRow<TSharedPtr<FAssetViewItem,1>>::OnMouseButtonDoubleClick(const FGeometry & InMyGeometry, const FPointerEvent & InMouseEvent) Line 423    C++
     [Inline Frame] UnrealEditor-Slate.dll!FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_1>::operator()(const FArrangedWidget &) Line 5702    C++
     UnrealEditor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,`FSlateApplication::RoutePointerDoubleClickEvent'::`2'::<lambda_1>>(FSlateApplication * ThisApplication, FEventRouter::FBubblePolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_1> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 442    C++
     UnrealEditor-Slate.dll!FSlateApplication::RoutePointerDoubleClickEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5700    C++
     UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonDoubleClickEvent(const TSharedPtr<FGenericWindow,1> & PlatformWindow, const FPointerEvent & InMouseEvent) Line 5685    C++
     UnrealEditor-Slate.dll!FSlateApplication::OnMouseDoubleClick(const TSharedPtr<FGenericWindow,1> & PlatformWindow, const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5648    C++
     UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2235    C++
     UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2738    C++
     UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1099    C++
     [Inline Frame] UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 931    C++
     UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 937    C++
     [External Code]    
     [Inline Frame] UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 119    C++
     UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 148    C++
     UnrealEditor.exe!FEngineLoop::Tick() Line 5749    C++
     [Inline Frame] UnrealEditor.exe!EngineTick() Line 61    C++
     UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 188    C++
     UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 247    C++
     UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 298    C++
     [External Code]    

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint Compiler
Affects Versions5.15.25.3
Target Fix5.4
Fix Commit30441292
Main Commit30441299
CreatedDec 22, 2023
ResolvedDec 22, 2023
UpdatedJan 20, 2024