Failing to create a CDO on load for UMG widget blueprint with a native parent class from a particular plugin module

I can’t figure out why this is happening to my plugin classes and not others, but I have some kind of dependency/load order problem with a pair of UMG widgets.

The widgets are a settings screen, and a settings entry widget, like the ones in Lyra. It uses the GameSettings plugin. Widgets derived from the classes in that module are loading correctly. However, the 2 offending widgets are derived from my own subclasses of the settings screen and settings entry base classes. They live in a module I have created for my UI related code, it depends on my core plugin module and not the other way around. They are defined like this in the uplugin file:

"Modules": [
		{
			"Name": "RTSDK",
			"Type": "Runtime",
			"LoadingPhase": "PreDefault"
		},
		{
			"Name": "RTSDKUI",
			"Type": "Runtime",
			"LoadingPhase": "Default"
		}
	],

Which puts RTSDKUI in the same loading phase as GameSettings as well as CommonUI, Default. Note, I changed this after first noticing the error, I was using PreDefault, thinking it was just loading it before it loaded the other plugins. But it did not change anything.

Here is the relevant log section

[2023.05.02-19.17.39:473][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: VerifyImport: Failed to find script package for import object 'Package /Script/RTSDKUI'
[2023.05.02-19.17.39:475][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.39:476][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.39:476][  0]LogLinker: Warning: Unable to load Default__RTSDKGenericEntryWidget_C with outer Package /RTSDK/UI/Settings/RTSDKGenericEntryWidget because its class (RTSDKGenericEntryWidget_C) does not exist
[2023.05.02-19.17.39:476][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.39:476][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.39:477][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.39:495][  0]LogOutputDevice: Warning: 

Script Stack (0 frames) :

Ensure condition failed: !GIsDuplicatingClassForReinstancing || InClass->HasAnyClassFlags(CLASS_Native) [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 3132] 

A breakpoint instruction (__debugbreak() statement or a similar call) was executed in UnrealEditor-Win64-DebugGame.exe.

[2023.05.02-19.17.39:501][  0]LogOutputDevice: Error: Ensure condition failed: !GIsDuplicatingClassForReinstancing || InClass->HasAnyClassFlags(CLASS_Native) [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 3132] 


[2023.05.02-19.17.54:893][  0]LogStats:             FDebug::EnsureFailed -  0.006 s
[2023.05.02-19.17.54:901][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/RTSDKGenericSettingsScreen.RTSDKGenericSettingsScreen_C
[2023.05.02-19.17.54:901][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/RTSDKGenericSettingsScreen.RTSDKGenericSettingsScreen_C
[2023.05.02-19.17.54:901][  0]LogLinker: Warning: Unable to load Default__RTSDKGenericSettingsScreen_C with outer Package /RTSDK/UI/RTSDKGenericSettingsScreen because its class (RTSDKGenericSettingsScreen_C) does not exist
[2023.05.02-19.17.54:902][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/RTSDKGenericSettingsScreen.RTSDKGenericSettingsScreen_C
[2023.05.02-19.17.54:902][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.54:903][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.54:903][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\Settings\RTSDKGenericEntryWidget.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/Settings/RTSDKGenericEntryWidget.RTSDKGenericEntryWidget_C
[2023.05.02-19.17.54:904][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/RTSDKGenericSettingsScreen.RTSDKGenericSettingsScreen_C
[2023.05.02-19.17.54:904][  0]LogLinker: Warning: [AssetLog] C:\Users\User\Documents\Unreal Projects\LockstepTest\Plugins\RTSDK\Content\UI\RTSDKGenericSettingsScreen.uasset: CreateExport: Failed to load Parent for WidgetBlueprintGeneratedClass /RTSDK/UI/RTSDKGenericSettingsScreen.RTSDKGenericSettingsScreen_C

If I reload the assets within the editor using the content browser it will load it correctly, so the class is valid, it just doesn’t exist yet when the CDO is made. How come? Can anyone help?

I have managed to fix this problem, which really should not be a problem.

I split off the folder my UI assets lived in within my plugin content folder, along with the code module, to a new plugin. This plugin I named RTSDKUI, like the module, and turned 1 plugin into 2. Then after a solution refresh I hit run with debugger and got to the editor with no errors. Blueprint happily accepted the native class.

Here is my theory: I suspect the content folder blueprints in my ‘RTSDK’ plugin creates CDOs after loading the first script module, and not after both have loaded. For anyone googling this issue in the future: try not to make blueprints based on plugin classes when you have multiple runtime modules (editor ones are much safer to mix in alongside another module)

I also suspect this would have been no problem had I merged the modules into 1, which I very much did not want to do.