Description

User report of an assertion that fires on editor reload during an attempt to reload an AIController-based Blueprint class with a dependency on a child Blueprint class, both created in a previous editor session.

Steps to Reproduce
  1. Create an AIController blueprint (ControllerA)
  2. Add an AIPerception component to ControllerA
  3. Add a sight sense to perception component with default settings - set sight as the dominant sense - save & compile
  4. Create a child class of ControllerA (ControllerB) - save & compile
  5. In ControllerA's BeginPlay, grab a reference to self and cast to ControllerB - save & compile
  6. Restart editor and attempt to load either ControllerA or ControllerB. A crash will result:
    [2018.03.23-13.48.51:182][876]LogWindows: Error: === Critical error: ===
    [2018.03.23-13.48.51:183][876]LogWindows: Error: 
    [2018.03.23-13.48.51:185][876]LogWindows: Error: Assertion failed: !Obj->HasAnyFlags(RF_NeedLoad|RF_NeedPostLoad|RF_ClassDefaultObject) || bIsOwnedByCDO [File:F:\dev\Epic\UE4\Release-4.19\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 2384] 
    [2018.03.23-13.48.51:189][876]LogWindows: Error: Attempting to replace an object that hasn't been fully loaded: AISenseConfig_Sight /Game/FirstPersonBP/ControllerB.ControllerB_C:AIPerception_GEN_VARIABLE.AISenseConfig_Sight_0 (Outer=AIPerceptionComponent /Game/FirstPersonBP/ControllerB.ControllerB_C:AIPerception_GEN_VARIABLE, Flags=0x00283021)
    [2018.03.23-13.48.51:195][876]LogWindows: Error: 
    [2018.03.23-13.48.51:196][876]LogWindows: Error: 
    [2018.03.23-13.48.51:198][876]LogWindows: Error: 
    
Callstack

UE4Editor-Core-Win64-Debug.dll!FDebug::AssertFailed(const char * Expr, const char * File, int Line, const wchar_t * Format, ...) Line 419 C++
UE4Editor-CoreUObject-Win64-Debug.dll!StaticAllocateObject(UClass * InClass, UObject * InOuter, FName InName, EObjectFlags InFlags, EInternalObjectFlags InternalSetFlags, bool bCanRecycleSubobjects, bool * bOutRecycledSubobject) Line 2379 C++
UE4Editor-CoreUObject-Win64-Debug.dll!StaticConstructObject_Internal(UClass * InClass, UObject * InOuter, FName InName, EObjectFlags InFlags, EInternalObjectFlags InternalSetFlags, UObject * InTemplate, bool bCopyTransientsFromClassDefaults, FObjectInstancingGraph * InInstanceGraph, bool bAssumeTemplateIsArchetype) Line 3161 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FObjectInstancingGraph::GetInstancedSubobject(UObject * SourceSubobject, UObject * CurrentValue, UObject * CurrentObject, bool bDoNotCreateNewInstance, bool bAllowSelfReference) Line 215 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FObjectInstancingGraph::InstancePropertyValue(UObject * ComponentTemplate, UObject * CurrentValue, UObject * Owner, bool bIsTransient, bool bCausesInstancing, bool bAllowSelfReference) Line 287 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UObjectPropertyBase::InstanceSubobjects(void * Data, const void * DefaultData, UObject * Owner, FObjectInstancingGraph * InstanceGraph) Line 36 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UArrayProperty::InstanceSubobjects(void * Data, const void * DefaultData, UObject * Owner, FObjectInstancingGraph * InstanceGraph) Line 516 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::InstanceSubobjectTemplates(void * Data, const void * DefaultData, UStruct * DefaultStruct, UObject * Owner, FObjectInstancingGraph * InstanceGraph) Line 1518 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FObjectInitializer::InstanceSubobjects(UClass * Class, bool bNeedInstancing, bool bNeedSubobjectInstancing) Line 2968 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FObjectInitializer::PostConstructInit() Line 2848 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FDeferredObjInitializerTracker::ResolveDeferredSubObjects(UObject * CDO) Line 2576 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FDeferredObjInitializerTracker::ResolveDeferredInitialization(UClass * LoadClass) Line 2529 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FDeferredObjInitializerTracker::ResolveDeferredSubClassObjects(UClass * SuperClass) Line 2612 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::ResolveDeferredExports(UClass * LoadClass) Line 1880 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::FinalizeBlueprint(UClass * LoadClass) Line 1614 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::FinalizeBlueprint(UClass * LoadClass) Line 1567 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Preload(UObject * Object) Line 3353 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateExport(int Index) Line 4027 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 2746 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::LoadAllObjects(bool bForcePreload) Line 2908 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker) Line 1328 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2423 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2471 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateImport(int Index) Line 4173 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::ResolveDependencyPlaceholder(FLinkerPlaceholderBase * PlaceholderIn, UClass * ReferencingClass, const FName ObjectPath) Line 1381 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::ResolveDeferredDependencies(UStruct * LoadStruct) Line 1241 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Preload(UObject * Object) Line 3353 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateExport(int Index) Line 4027 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::IndexToObject(FPackageIndex Index) Line 4250 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateExport(int Index) Line 3648 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateExportAndPreload(int ExportIndex, bool bForcePreload) Line 2746 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::LoadAllObjects(bool bForcePreload) Line 2908 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker) Line 1328 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2423 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2471 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2471 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Verify() Line 1966 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::FinalizeCreation() Line 1868 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Tick(float InTimeLimit, bool bInUseTimeLimit, bool bInUseFullTimeLimit) Line 735 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateLinker(UPackage * Parent, const wchar_t * Filename, unsigned int LoadFlags) Line 438 C++
UE4Editor-CoreUObject-Win64-Debug.dll!GetPackageLinker(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags, UPackageMap * Sandbox, FGuid * CompatibleGuid) Line 700 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker) Line 1240 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2423 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImportInner(const int ImportIndex, FString & WarningSuffix) Line 2471 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::VerifyImport(int ImportIndex) Line 2179 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Verify() Line 1966 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::FinalizeCreation() Line 1868 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::Tick(float InTimeLimit, bool bInUseTimeLimit, bool bInUseFullTimeLimit) Line 735 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FLinkerLoad::CreateLinker(UPackage * Parent, const wchar_t * Filename, unsigned int LoadFlags) Line 438 C++
UE4Editor-CoreUObject-Win64-Debug.dll!GetPackageLinker(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags, UPackageMap * Sandbox, FGuid * CompatibleGuid) Line 700 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker) Line 1240 C++
UE4Editor-CoreUObject-Win64-Debug.dll!LoadPackage(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags) Line 1436 C++
UE4Editor-CoreUObject-Win64-Debug.dll!ResolveName(UObject * & InPackage, FString & InOutName, bool Create, bool Throw, unsigned int LoadFlags) Line 792 C++
UE4Editor-CoreUObject-Win64-Debug.dll!StaticLoadObjectInternal(UClass * ObjectClass, UObject * InOuter, const wchar_t * InName, const wchar_t * Filename, unsigned int LoadFlags, UPackageMap * Sandbox, bool bAllowObjectReconciliation) Line 880 C++
UE4Editor-CoreUObject-Win64-Debug.dll!StaticLoadObject(UClass * ObjectClass, UObject * InOuter, const wchar_t * InName, const wchar_t * Filename, unsigned int LoadFlags, UPackageMap * Sandbox, bool bAllowObjectReconciliation) Line 947 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!FAssetData::GetAsset() Line 284 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!SContentBrowser::OnAssetsActivated(const TArray<FAssetData,FDefaultAllocator> & ActivatedAssets, EAssetTypeActivationMethod::Type ActivationMethod) Line 2052 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,TTypeWrapper<void> __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::Execute(const TArray<FAssetData,FDefaultAllocator> & <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 269 C++
UE4Editor-ContentBrowser-Win64-Debug.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 347 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TBaseDelegate<void,TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type>::ExecuteIfBound(const TArray<FAssetData,FDefaultAllocator> & <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 624 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<FAssetViewItem,0> AssetItem) Line 3941 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TMemberFunctionCaller<SAssetView,void (__cdecl SAssetView::*)(TSharedPtr<FAssetViewItem,0>) __ptr64>::operator()<TSharedPtr<FAssetViewItem,0> & __ptr64>(TSharedPtr<FAssetViewItem,0> & <Args_0>) Line 157 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,SAssetView,0,TTypeWrapper<void> __cdecl(TSharedPtr<FAssetViewItem,0>)>::Execute(TSharedPtr<FAssetViewItem,0> <Params_0>) Line 269 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,SAssetView,0,void __cdecl(TSharedPtr<FAssetViewItem,0>)>::ExecuteIfSafe(TSharedPtr<FAssetViewItem,0> <Params_0>) Line 347 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!TBaseDelegate<void,TSharedPtr<FAssetViewItem,0> >::ExecuteIfBound(TSharedPtr<FAssetViewItem,0> <Params_0>) Line 624 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemDoubleClicked(TSharedPtr<FAssetViewItem,0> TheItem) Line 809 C++
UE4Editor-ContentBrowser-Win64-Debug.dll!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonDoubleClick(const FGeometry & InMyGeometry, const FPointerEvent & InMouseEvent) Line 287 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5872 C++
UE4Editor-Slate-Win64-Debug.dll!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) >(FSlateApplication * ThisApplication, FEventRouter::FBubblePolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerDoubleClickEvent::__l2::FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) & Lambda) Line 266 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerDoubleClickEvent(FWidgetPath & WidgetsUnderPointer, FPointerEvent & PointerEvent) Line 5870 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::ProcessMouseButtonDoubleClickEvent(const TSharedPtr<FGenericWindow,0> & PlatformWindow, FPointerEvent & InMouseEvent) Line 5857 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::OnMouseDoubleClick(const TSharedPtr<FGenericWindow,0> & PlatformWindow, const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5833 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1730 C++
UE4Editor-ApplicationCore-Win64-Debug.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 2172 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 891 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 725 C++
[External Code]
UE4Editor-ApplicationCore-Win64-Debug.dll!WinPumpMessages() Line 107 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 132 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 3263 C++
UE4Editor-Win64-Debug.exe!EngineTick() Line 63 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 169 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 199 C++

Have Comments or More Details?

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

3
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.18.34.194.19.1
Target Fix4.20
Fix Commit4104031
Main Commit4124555
Release Commit4104031
CreatedMar 23, 2018
ResolvedMay 31, 2018
UpdatedJun 12, 2018