[4.18.0] editor crash while opening child blueprint

everyhing worked fine in 4.17, migrating to 4.18.0 i’m not able to avoid crash opening a game state child blueprint (class is child of child).

Even recreating parent or child class from scratch doesn’t resolve issue… when i add a few overrided functions bp will crash again…
debugging in visual studio I get:

Failed assertion:
check(!F->GetSuperFunction() || (F->GetSuperFunction()->FunctionFlags&FUNC_NetFuncFlags) == (F->FunctionFlags&FUNC_NetFuncFlags));

runtime values:

+		F->GetSuperFunction()	0x0000029d86bea700 (Name=0x0000029daf1cbc50 "PLACEHOLDER-FUNCTION__CustomServerObjectSnap"_0)	UFunction * {ULinkerPlaceholderFunction}
		F->GetSuperFunction()->FunctionFlags	FUNC_None (0)	EFunctionFlags
+		F	0x0000029d08a82080 (Name=0x0000029d42a6f308 "CustomServerObjectSnap")	UFunction *
		F->FunctionFlags	FUNC_Net | FUNC_NetReliable | FUNC_NetServer | FUNC_BlueprintCallable | FUNC_BlueprintEvent (203423936)	EFunctionFlags

superfunction returns a “placeholder-function” with null net flags…

call stack:

UE4Editor-CoreUObject.dll!UClass::Link(FArchive & Ar, bool bRelinkExistingProperties) Line 3068 C++
UE4Editor-Engine.dll!UBlueprintGeneratedClass::Link(FArchive & Ar, bool bRelinkExistingProperties) Line 1367 C++
UE4Editor-CoreUObject.dll!UClass::Serialize(FArchive & Ar) Line 3531 C++
UE4Editor-Engine.dll!UBlueprintGeneratedClass::Serialize(FArchive & Ar) Line 1460 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::Preload(UObject * Object) Line 3300 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::CreateExport(int Index) Line 4018 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::IndexToObject(FPackageIndex Index) Line 4241 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::CreateExport(int Index) Line 3711 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 2744 C++
UE4Editor-CoreUObject.dll!FLinkerLoad::LoadAllObjects(bool bForcePreload) Line 2902 C++
UE4Editor-CoreUObject.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker) Line 1322 C++
UE4Editor-CoreUObject.dll!LoadPackage(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags) Line 1430 C++
UE4Editor-CoreUObject.dll!ResolveName(UObject * & InPackage, FString & InOutName, bool Create, bool Throw, unsigned int LoadFlags) Line 798 C++
UE4Editor-CoreUObject.dll!StaticLoadObjectInternal(UClass * ObjectClass, UObject * InOuter, const wchar_t * InName, const wchar_t * Filename, unsigned int LoadFlags, UPackageMap * Sandbox, bool bAllowObjectReconciliation) Line 886 C++
UE4Editor-CoreUObject.dll!StaticLoadObject(UClass * ObjectClass, UObject * InOuter, const wchar_t * InName, const wchar_t * Filename, unsigned int LoadFlags, UPackageMap * Sandbox, bool bAllowObjectReconciliation) Line 953 C++
UE4Editor-ContentBrowser.dll!FAssetData::GetAsset() Line 283 C++
UE4Editor-ContentBrowser.dll!SContentBrowser::OnAssetsActivated(const TArray<FAssetData,FDefaultAllocator> & ActivatedAssets, EAssetTypeActivationMethod::Type ActivationMethod) Line 1922 C++
UE4Editor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,TTypeWrapper __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::Execute(const TArray<FAssetData,FDefaultAllocator> & <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 327 C++
UE4Editor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,void __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::ExecuteIfSafe(const TArray<FAssetData,FDefaultAllocator> & <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 434 C++
UE4Editor-ContentBrowser.dll!SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<FAssetViewItem,0> AssetItem) Line 3904 C++

I’ve submittet following crash report

LoginId:f6095d2940b05f5c05a7e6a11834bc97
EpicAccountId:f4fa59ecda68487b952c18802c6ce9d8

Assertion failed: !F->GetSuperFunction() || (F->GetSuperFunction()->FunctionFlags&FUNC_NetFuncFlags) == (F->FunctionFlags&FUNC_NetFuncFlags) [File:D:\Build\++UE4+Release-4.18+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp] [Line: 3068]

UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:414]
UE4Editor_CoreUObject!UClass::Link() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:3069]
UE4Editor_Engine!UBlueprintGeneratedClass::Link() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\blueprintgeneratedclass.cpp:1367]
UE4Editor_CoreUObject!UClass::Serialize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:3531]
UE4Editor_Engine!UBlueprintGeneratedClass::Serialize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\blueprintgeneratedclass.cpp:1460]
UE4Editor_CoreUObject!FLinkerLoad::Preload() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3300]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4018]
UE4Editor_CoreUObject!FLinkerLoad::IndexToObject() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4241]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3711]
UE4Editor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2744]
UE4Editor_CoreUObject!FLinkerLoad::LoadAllObjects() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2902]
UE4Editor_CoreUObject!LoadPackageInternal() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1322]
UE4Editor_CoreUObject!LoadPackage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1430]
UE4Editor_CoreUObject!ResolveName() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:798]
UE4Editor_CoreUObject!StaticLoadObjectInternal() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:886]
UE4Editor_CoreUObject!StaticLoadObject() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:953]
UE4Editor_ContentBrowser!ContentBrowserUtils::LoadAssetsIfNeeded() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\contentbrowser\private\contentbrowserutils.cpp:381]
UE4Editor_ContentBrowser!SAssetView::CanOpenContextMenu() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\contentbrowser\private\sassetview.cpp:3870]
UE4Editor_ContentBrowser!SAssetView::OnGetContextMenuContent() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\contentbrowser\private\sassetview.cpp:3801]
UE4Editor_ContentBrowser!TMemberFunctionCaller<SAssetView,TSharedPtr<SWidget,0> (__cdecl SAssetView::*)(void) __ptr64>::operator()<>() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
UE4Editor_ContentBrowser!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SAssetView,TSharedPtr<SWidget,0> (__cdecl SAssetView::*)(void) __ptr64> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\templates\tuple.h:497]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,TSharedPtr<SWidget,0> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Slate!TBaseDelegate<TSharedPtr<SWidget,0> >::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:537]
UE4Editor_Slate!STableViewBase::OnRightMouseButtonUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\widgets\views\stableviewbase.cpp:802]
UE4Editor_ContentBrowser!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemRightClicked() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\public\widgets\views\slistview.h:790]
UE4Editor_ContentBrowser!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\public\widgets\views\stablerow.h:502]
UE4Editor_Slate!<lambda_74ecb22bb70e3f50c9d83154dfa5c688>::operator()() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5312]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_74ecb22bb70e3f50c9d83154dfa5c688> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:234]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5296]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5750]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5730]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1725]
UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2171]
UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:888]
UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:725]
user32
user32
UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsplatformapplicationmisc.cpp:129]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3220]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Can confirm this is happening also when migrating a project from 4.17 to 4.18.
Editor loads up up to 93%
Than this: ue4 load crash · GitHub

I’d like to clarify the whole scenario:

  • “base” game state class (child of engine’s gamestatebase)
  • “intermediate” game state class child of “base” game state, override a few parent’s functions
  • “basic” game state class child of “intermediate” game state, override a few functions from “intermediate” and “base” game state

No more crashes if i reparent “basic” class directly to “base” class (removing “intermediate” class)

never meant to say this is a workaround :wink:
in fact this is a very critical bug: inheritance mechanism bugs shouldn’t drive game architecture… :frowning:

This is OK to do for a new project, sadly not so much in case you want to migrate an existing project.(Just wanted to make sure nobody sees the reparenting as a valid workaround:))

Hello Curs0,

I was unable to reproduce the issue you are experiencing. I have a couple of questions to help narrow down the issue you are experiencing.

  1. Are you able to reproduce this issue in a blank project?
  2. If so could you provide a detailed list of steps so that I can reproduce this issue on our end?

Thanks!

Been trying to recreate it on a clean project for some time now but I am not able to, hope OP will have more luck. Unfortunately I am not at home with my regular debugging setup so cannot dig deeper into what is going on, but I can offer access to the project where it is crashing on the migration from 4.17 to 4.18.

Hello, we ran into this issue as well with a 4.16 to 4.18 build. It seemed to be inherited BP functions that were overwritten in the child BP. Since I had a source build I just removed the routine to let it load and spit out the functions that were having issues. Ended up being 3 of them, guessing they got mixed up with some network changes to the parent at some point.

Sorry Thomas, no time at the moment to find a repro. Ended up removing an inheritance level.
Btw, as I can read this seems a common problem, I’m starting to hate blueprints… thanks anyway

Happening to me as well. 4.17-4.18 update of a project.

When migrating the project removing the the default map lets me load the editor OK(the BP with inheritance is placed on the default map).

When opening the child actor I get the following UE4.18_crash.log · GitHub
Might be a bit helpful error message

I have same problem, After switching to 4.18 i have random crash at 93% Sometimes its 50% sometimes 100. I don’t know where the problem is but my guess its in game state or game mode blueprints and casting to my custom modes that are childs of game mode class and game state class. Please find the solution, this is driving me crazy… :frowning:

Hello all,

I am still unable to reproduce the issue being experienced, was anyone able to reproduce this issue in a new project, or have a project that can reproduce this issue consistently?

Thanks!

Hi there, my problem was fixed and it was totally different then i though. Sometimes I corrupt my project by changing Struct file of data table, like by adding int variable and i use it in some blueprints. Then after project restart i have crash at startup because some items in by DT are for example Placeholder_ItemHealingPotion01 and any solution to fix this is to revert struct and add this variable Again. dunno why it make crash and DT file corrupt but after switching to 4.18 from 4.16 one of my DT was crashing because of placeholder classes. I did revert and now everything works fine.

Still an issue in 4.18.1

Having this same problem. When debugging in visual studio found that in my case Multicast BP Events which are overridden on a child BP seem to be causing the issue. Causing F->GetSuperFunction() to return null and thus fail the assertion. From visual studio you can see the functions in your project which fail if you have debugger symbols installed.

In my case I had to go through the impacted BPs in an older version of the project, delete all the child overrides whose parent event has multicast, copy those BPs to the 4.18 version, and after that the 4.18 project loaded. Then I was able to add in the overrides again and it seems to be compiling and playing fine, though I have a lot of testing to do since this is a common pattern for me.

As a previous commenter indicates removing the default map setting in your defaultengine.ini will help you get your 4.18 proj loaded, from there you could find out which BPs are crashing.

I think to repro in a clean project you would likely have to use an old engine version, create a BP with child, put a multicast event in the parent, then ovveride in the child, then try to migrate the project to 4.18. Don’t have time to do all that at the moment, kids are pulling on my arms. :slight_smile:

I have the same issue upgrading a project from 4.15. I have been able to reproduce the crash in a clean project. Hope this helps.

repro steps

  1. Make a 4.15 project.
  2. Make a blueprint derived from Actor.
  3. On begin play call a multicast
    custom event.
  4. Create a child blueprint class of
    your blueprint.
  5. Create a child blueprint class of
    the class created in the previous step.
  6. Override the multicast event in the
    child of the child.
  7. Convert project to 4.18.
  8. Try to open a blueprint

Here a link to my repro project

crashes when you open the 4.18 project and try to open the Test1_Child blueprint

I hope this gets fixed soon. For now, work will continue using 4.17 since upgrading to that went fine.

You are right. I created a repro project and with it attached added a comment to Thomas G above. The problem with your workaround is that it indeed compiles fine after replacing the overrides. However, when I restart my project it will crash again when trying to open something.

Thanks for the repro. Here’s the real workaround. It sucks, but it will work:

-In your parent BP, leave the replicating event the same, have it call a new function instead of its previous logic. Put its previous logic in the function. Name the function something that distinguishes it from the event, you’ll be overriding this function.

-In your child BP, override the new function instead of the parent event.

This retains multiplayer and still allows your child to override the parent logic.

If you don’t really need the event to make a network call, making it a normal event will also fix the crashing since the bug appears related to the network code.

I’ve restarted multiple times as well as cooked a build and the crashing seems to be gone now.

I figured that would work. I chose to stay in 4.17 rather then work in a project where I have to avoid something as basic as overriding replicated events.