I have been trying to upgrade from 4.5.1 to 4.6.1 and am blocked by a crash in running standalone. I have a base blueprint that has several Events that are intended to be overridden by child blueprints. These child blueprints are then supposed to call up to their parent (aka virtual functions). These functions are working fine in PIE, but when I play in a standalone instance, I crash on load. Call stack below. Basically, in UK2Node_CallFunction::CreateSelfPin, it tries to call FunctionClass->GetAuthoritativeClass. Inside UBlueprintGeneratedClass::GetAuthoritativeClass, it tries to access ClassGeneratedBy, which is NULL, and so it crashes. I noticed that FunctionClass is pointing to a decorated version of my class. It’s pointing to something called “TRASHCLASS_MCore2Interactive”. I’m assuming the TRASHCLASS is the issue and that it was the old class object that is pending delete in the process of calling FBlueprintEditorUtils::RegenerateBlueprintClass.
I’ve been trying to figure out why it’s failing and where TRASHCLASS is coming from, but it’s not going to well.
Everything worked fine in 4.5.1. Everything works fine in 4.6.1 PIE. Everything is terrible in 4.6.1 Standalone.
Additional data: this is with engine source, but I don’t have any changes that should affect this. I noticed this does not repro with a simple example like SwingNinja.
UE4Editor-Core-Win64-Debug.dll!StaticFailDebug(const wchar_t * Error, const char * File, int Line, const wchar_t * Description, bool bIsEnsure) Line 190 C++
UE4Editor-Core-Win64-Debug.dll!FMsg::Logf__VA(const char * File, int Line, const FName & Category, ELogVerbosity::Type Verbosity, const wchar_t * Fmt, ...) Line 523 C++
UE4Editor-CoreUObject-Win64-Debug.dll!CastLogError(const wchar_t * FromType, const wchar_t * ToType) Line 12 C++
UE4Editor-Engine-Win64-Debug.dll!CastChecked<UBlueprint,UObject>(UObject * Src, ECastCheckedType::Type CheckType) Line 160 C++
UE4Editor-Engine-Win64-Debug.dll!UBlueprintGeneratedClass::GetAuthoritativeClass() Line 73 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node_CallFunction::CreateSelfPin(const UFunction * Function) Line 623 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node_CallFunction::CreatePinsForFunctionCall(const UFunction * Function) Line 771 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node_CallFunction::AllocateDefaultPins() Line 563 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node_CallParentFunction::AllocateDefaultPins() Line 37 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node::ReallocatePinsDuringReconstruction(TArray<UEdGraphPin *,FDefaultAllocator> & __formal) Line 272 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node_CallFunction::ReallocatePinsDuringReconstruction(TArray<UEdGraphPin *,FDefaultAllocator> & OldPins) Line 603 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UK2Node::ReconstructNode() Line 355 C++
UE4Editor-Engine-Win64-Debug.dll!UEdGraphSchema::ReconstructNode(UEdGraphNode & TargetNode, bool bIsBatchRequest) Line 528 C++
UE4Editor-BlueprintGraph-Win64-Debug.dll!UEdGraphSchema_K2::ReconstructNode(UEdGraphNode & TargetNode, bool bIsBatchRequest) Line 3424 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintEditorUtils::RefreshAllNodes(UBlueprint * Blueprint) Line 303 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintEditorUtils::RegenerateBlueprintClass(UBlueprint * Blueprint, UClass * ClassToRegenerate, UObject * PreviousCDO, TArray<UObject *,FDefaultAllocator> & ObjLoaded) Line 1132 C++
UE4Editor-Engine-Win64-Debug.dll!UBlueprint::RegenerateClass(UClass * ClassToRegenerate, UObject * PreviousCDO, TArray<UObject *,FDefaultAllocator> & ObjLoaded) Line 426 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::RegenerateBlueprintClass(UClass * LoadClass, UObject * ExportObject) Line 123 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExport(int Index) Line 3239 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::IndexToObject(FPackageIndex Index) Line 3425 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::operator<<(UObject * & Object) Line 3605 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UClass::Serialize(FArchive & Ar) Line 3038 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::Preload(UObject * Object) Line 2769 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExport(int Index) Line 3283 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::IndexToObject(FPackageIndex Index) Line 3425 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExport(int Index) Line 3059 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 2441 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::LoadAllObjects(bool bForcePreload) Line 2523 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags, ULinkerLoad * ImportLinker) Line 875 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2134 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::VerifyImport(int ImportIndex) Line 1915 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2182 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::VerifyImport(int ImportIndex) Line 1915 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExport(int Index) Line 2924 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::IndexToObject(FPackageIndex Index) Line 3425 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExport(int Index) Line 3059 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 2441 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ULinkerLoad::LoadAllObjects(bool bForcePreload) Line 2523 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags, ULinkerLoad * ImportLinker) Line 875 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackage(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags) Line 956 C++
UE4Editor-Engine-Win64-Debug.dll!UEngine::LoadMap(FWorldContext & WorldContext, FURL URL, UPendingNetGame * Pending, FString & Error) Line 8810 C++
UE4Editor-Engine-Win64-Debug.dll!UEngine::Browse(FWorldContext & WorldContext, FURL URL, FString & Error) Line 8100 C++
UE4Editor-Engine-Win64-Debug.dll!UGameInstance::StartGameInstance() Line 296 C++
UE4Editor-Engine-Win64-Debug.dll!UGameEngine::Init(IEngineLoop * InEngineLoop) Line 480 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Init() Line 1919 C++
UE4Editor-Win64-Debug.exe!EngineInit() Line 41 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 126 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 191 C++