[UE5.1.1, Bug report] Changing child actor component's class crashes editor.

A core redirector failed to redirect a package, Plugin A to Plugin B (just a name change) which resulted in a failed load of a component class on a child actor component in one of my pawns.

LogLinker: Warning: Unable to load ShoulderCameraParent_TrackingCameraActor_CAT with outer ChildActorComponent /Game/_Testing/BP_Human.Default__BP_Human_C:ShoulderCameraParent because its class (TrackingCameraActor) does not exist

Thing is, You can’t set a new class on this child actor component from the dropdown property selector on the editor. It will crash:


Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp] [Line: 231] Renaming an object (TrackingCameraActor /Engine/Transient.TrackingCameraActor_4) on top of an existing object (TrackingCameraActor /Game/_Testing/BP_Human.Default__BP_Human_C:ShoulderCameraParent.ShoulderCameraParent_TrackingCameraActor_CAT) is not allowed

UnrealEditor_CoreUObject!UObject::Rename() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:231]
UnrealEditor_Engine!AActor::Rename() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:1334]
UnrealEditor_Engine!UChildActorComponent::SetChildActorClass() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\ChildActorComponent.cpp:545]
UnrealEditor_Engine!UChildActorComponent::PostEditChangeChainProperty() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\ChildActorComponent.cpp:256]
UnrealEditor_PropertyEditor!<lambda_94ea5454cfa0ce74b9b5335ebcbd0b17>::operator()() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyNode.cpp:2640]
UnrealEditor_PropertyEditor!FPropertyNode::NotifyPostChange() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyNode.cpp:2645]
UnrealEditor_PropertyEditor!FPropertyValueImpl::ImportText() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:457]
UnrealEditor_PropertyEditor!FPropertyValueImpl::ImportText() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:225]
UnrealEditor_PropertyEditor!FPropertyValueImpl::SetValueAsString() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:746]
UnrealEditor_PropertyEditor!FPropertyHandleObject::SetValueFromFormattedString() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp:4052]
UnrealEditor_PropertyEditor!SPropertyEditorClass::SendToObjects() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\UserInterface\PropertyEditor\SPropertyEditorClass.cpp:363]
UnrealEditor_PropertyEditor!SPropertyEditorClass::OnClassPicked() [D:\build\++UE5\Sync\Engine\Source\Editor\PropertyEditor\Private\UserInterface\PropertyEditor\SPropertyEditorClass.cpp:352]
UnrealEditor_PropertyEditor!TBaseRawMethodDelegateInstance<0,SPropertyEditorClass,void __cdecl(UClass *),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:476]
UnrealEditor_ClassViewer!SClassViewer::OnClassViewerSelectionChanged() [D:\build\++UE5\Sync\Engine\Source\Editor\ClassViewer\Private\SClassViewer.cpp:1801]

Oddly, setting the class of the child actor component to “None”, saving , rebooting the editor, results in the same error. It happens only for selecting the class it broke on in the first place.

The child actor component itself is added in c++, where the class for this component is specified as well:

ShoulderCameraParent = CreateDefaultSubobject<UChildActorComponent>(TEXT("ShoulderCameraParent"));
ShoulderCameraParent->SetChildActorClass(ATrackingCameraActor::StaticClass());

Sigh… Where to begin with this engine. It’s probably a series of engine bugs.

AssetCheck: New page: Asset Save: BP_Human
LogContentValidation: Display: Validating /Script/Engine.Blueprint /Game/_Testing/BP_Human.BP_Human
LogUObjectGlobals: Warning: Failed to find object 'Class /Game/_Testing/BP_Human.BP_Human'
LogUObjectGlobals: Warning: Failed to find object 'Class /Game/_Testing/BP_Human.BP_Human'