Description

A crash that is possibly the result of a circular dependency can occur if a Blueprint containing an ActorComponent with instanced UObjects and a variable that is a type of a child of itself is opened.

Steps to Reproduce
  1. Create a new Basic Code project.
  2. Build the project in Visual Studio.
  3. Open the project in the Editor.
  4. Add a new ActorComponent class to the project named TestComponent.
  5. Remove the boiler-plate code from the resulting .cpp and .h files.
  6. In the TestComponent.h file, add the following code:
    #pragma once
    
    #include "Components/ActorComponent.h"
    #include "TestComponent.generated.h"
    
    UCLASS(EditInlineNew)
    class UInstancedObject1 : public UObject
    {
            GENERATED_BODY()
    };
    
    UCLASS(EditInlineNew)
    class UInstancedObject2 : public UObject
    {
    	GENERATED_BODY()
         
    	UPROPERTY(EditAnywhere, Instanced)
         	class UInstancedObject1* InstancedObject1;
    };
         
    UCLASS(Meta=(BlueprintSpawnableComponent))
    class UTestComponent : public UActorComponent
    {
    	GENERATED_BODY()
         
    	UPROPERTY(EditAnywhere, Instanced)
    	class UInstancedObject2* InstancedObject2;
    };
    
  7. In the Editor, make a new Blueprint derived from Actor.
  8. Add a Test component to the new Blueprint.
  9. In the Test component, make an instance of InstancedObject2.
  10. In the instance of InstancedObject2, make an instance of InstancedObject1.
  11. Create a child Blueprint of the Blueprint created in step 7.
  12. In the first Blueprint (the parent), add a variable of the type of the child Blueprint.
  13. Save everything and close the Editor.
  14. Open the project in the Editor again.
  15. Open either Blueprint.

RESULT:
The Editor crashes.

EXPECTED:
The Blueprint opens.

Callstack

Assertion failed: !Obj->HasAnyFlags(RF_NeedLoad|RF_NeedPostLoad|RF_ClassDefaultObject) || bIsOwnedByCDO [Link Removed] [Line: 2419]
Attempting to replace an object that hasn't been fully loaded: InstancedObject2 /Game/NewBlueprint_Child.NewBlueprint_Child_C:Test_GEN_VARIABLE.InstancedObject2_0 (Outer=TestComponent /Game/NewBlueprint_Child.NewBlueprint_Child_C:Test_GEN_VARIABLE, Flags=0x00283021)

UE4Editor_Core!FDebug::AssertFailed() [d:\main-builds\stream\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
UE4Editor_CoreUObject!StaticAllocateObject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2415]
UE4Editor_CoreUObject!StaticConstructObject_Internal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:3263]
UE4Editor_CoreUObject!FObjectInstancingGraph::GetInstancedSubobject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\corenative.cpp:191]
UE4Editor_CoreUObject!FObjectInstancingGraph::InstancePropertyValue() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\corenative.cpp:264]
UE4Editor_CoreUObject!UObjectPropertyBase::InstanceSubobjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\propertybaseobject.cpp:37]
UE4Editor_CoreUObject!UStruct::InstanceSubobjectTemplates() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\class.cpp:1491]
UE4Editor_CoreUObject!FObjectInitializer::InstanceSubobjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:3003]
UE4Editor_CoreUObject!FObjectInitializer::PostConstructInit() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2887]
UE4Editor_CoreUObject!FDeferredObjInitializerTracker::ResolveDeferredSubObjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:2166]
UE4Editor_CoreUObject!FDeferredObjInitializerTracker::ResolveDeferredInitialization() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:2140]
UE4Editor_CoreUObject!FDeferredObjInitializerTracker::ResolveDeferredSubClassObjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:2220]
UE4Editor_CoreUObject!FLinkerLoad::ResolveDeferredExports() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:1561]
UE4Editor_CoreUObject!FLinkerLoad::FinalizeBlueprint() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:1321]
UE4Editor_CoreUObject!FLinkerLoad::FinalizeBlueprint() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:1285]
UE4Editor_CoreUObject!FLinkerLoad::Preload() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3466]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4131]
UE4Editor_CoreUObject!FLinkerLoad::IndexToObject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4353]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3827]
UE4Editor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2885]
UE4Editor_CoreUObject!FLinkerLoad::LoadAllObjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3024]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1311]
UE4Editor_CoreUObject!LoadPackageInternal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1463]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2562]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2610]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::CreateImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4276]
UE4Editor_CoreUObject!FLinkerLoad::ResolveDependencyPlaceholder() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:1100]
UE4Editor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\blueprint\blueprintsupport.cpp:960]
UE4Editor_CoreUObject!FLinkerLoad::Preload() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3466]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4131]
UE4Editor_CoreUObject!FLinkerLoad::IndexToObject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4353]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3827]
UE4Editor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2885]
UE4Editor_CoreUObject!FLinkerLoad::LoadAllObjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3024]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1311]
UE4Editor_CoreUObject!LoadPackageInternal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1463]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2562]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2610]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2610]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::CreateImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4276]
UE4Editor_CoreUObject!FLinkerLoad::IndexToObject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:4388]
UE4Editor_CoreUObject!FLinkerLoad::CreateExport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3690]
UE4Editor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2885]
UE4Editor_CoreUObject!FLinkerLoad::LoadAllObjects() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:3024]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1311]
UE4Editor_CoreUObject!LoadPackageInternal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1463]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2562]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2610]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::Verify() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2109]
UE4Editor_CoreUObject!FLinkerLoad::FinalizeCreation() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:1999]
UE4Editor_CoreUObject!FLinkerLoad::Tick() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:707]
UE4Editor_CoreUObject!FLinkerLoad::CreateLinker() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:413]
UE4Editor_CoreUObject!GetPackageLinker() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linker.cpp:671]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1233]
UE4Editor_CoreUObject!LoadPackageInternal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1463]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2562]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImportInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2610]
UE4Editor_CoreUObject!FLinkerLoad::VerifyImport() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2330]
UE4Editor_CoreUObject!FLinkerLoad::Verify() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2109]
UE4Editor_CoreUObject!FLinkerLoad::FinalizeCreation() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:1999]
UE4Editor_CoreUObject!FLinkerLoad::Tick() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:707]
UE4Editor_CoreUObject!FLinkerLoad::CreateLinker() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:413]
UE4Editor_CoreUObject!GetPackageLinker() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\linker.cpp:671]
UE4Editor_CoreUObject!LoadPackageInternalInner() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1233]
UE4Editor_CoreUObject!LoadPackage() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1477]
UE4Editor_CoreUObject!ResolveName() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:756]
UE4Editor_CoreUObject!StaticLoadObjectInternal() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:843]
UE4Editor_CoreUObject!StaticLoadObject() [d:\main-builds\stream\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:903]
UE4Editor_ContentBrowser!FAssetData::GetAsset() [d:\main-builds\stream\engine\source\runtime\assetregistry\public\assetdata.h:232]
UE4Editor_ContentBrowser!SContentBrowser::OnAssetsActivated() [d:\main-builds\stream\engine\source\editor\contentbrowser\private\scontentbrowser.cpp:1848]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,TTypeWrapper<void> __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::Execute() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SContentBrowser,0,void __cdecl(TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type)>::ExecuteIfSafe() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_ContentBrowser!TBaseDelegate<void,TArray<FAssetData,FDefaultAllocator> const & __ptr64,enum EAssetTypeActivationMethod::Type>::ExecuteIfBound() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:624]
UE4Editor_ContentBrowser!SAssetView::OnListMouseButtonDoubleClick() [d:\main-builds\stream\engine\source\editor\contentbrowser\private\sassetview.cpp:3732]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,TTypeWrapper<void> __cdecl(TSharedPtr<FAssetViewItem,0>)>::Execute() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_ContentBrowser!TBaseSPMethodDelegateInstance<0,SAssetView,0,void __cdecl(TSharedPtr<FAssetViewItem,0>)>::ExecuteIfSafe() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:434]
UE4Editor_ContentBrowser!TBaseDelegate<void,TSharedPtr<FAssetViewItem,0> >::ExecuteIfBound() [d:\main-builds\stream\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:624]
UE4Editor_ContentBrowser!SListView<TSharedPtr<FAssetViewItem,0> >::Private_OnItemDoubleClicked() [d:\main-builds\stream\engine\source\runtime\slate\public\widgets\views\slistview.h:800]
UE4Editor_ContentBrowser!STableRow<TSharedPtr<FAssetViewItem,0> >::OnMouseButtonDoubleClick() [d:\main-builds\stream\engine\source\runtime\slate\public\widgets\views\stablerow.h:287]
UE4Editor_Slate!<lambda_eeb33fd1b480e3cad58a1531d90d2e14>::operator()() [d:\main-builds\stream\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5446]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_eeb33fd1b480e3cad58a1531d90d2e14> >() [d:\main-builds\stream\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:238]
UE4Editor_Slate!FSlateApplication::RoutePointerDoubleClickEvent() [d:\main-builds\stream\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5444]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonDoubleClickEvent() [d:\main-builds\stream\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5429]
UE4Editor_Slate!FSlateApplication::OnMouseDoubleClick() [d:\main-builds\stream\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5407]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\main-builds\stream\engine\source\runtime\core\private\windows\windowsapplication.cpp:1702]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\main-builds\stream\engine\source\runtime\core\private\windows\windowsapplication.cpp:2120]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\main-builds\stream\engine\source\runtime\core\private\windows\windowsapplication.cpp:867]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\main-builds\stream\engine\source\runtime\core\private\windows\windowsapplication.cpp:714]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\main-builds\stream\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:979]
UE4Editor!FEngineLoop::Tick() [d:\main-builds\stream\engine\source\runtime\launch\private\launchengineloop.cpp:2971]
UE4Editor!GuardedMain() [d:\main-builds\stream\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\main-builds\stream\engine\source\runtime\launch\private\windows\launchwindows.cpp:130]
UE4Editor!WinMain() [d:\main-builds\stream\engine\source\runtime\launch\private\windows\launchwindows.cpp:206]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Have Comments or More Details?

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

25
Login to Vote

Cannot Reproduce
ComponentUE - Gameplay - Blueprint
Affects Versions4.13.24.14.14.16
Target Fix4.17
CreatedDec 23, 2016
ResolvedJun 29, 2017
UpdatedJun 11, 2019