A fatal error occurs if we change a Child Actor Class from one BP (ex. "BP_A") to a different BP ( ex. "BP_B") and later change it back to the first BP (ex. "BP_A") without compiling the BP between changes. This particular issue was tracked by the licensee as he was working on the Lyra project on UE5.4 and created a ChildActorComponent inside a SceneComponent inside B_ExperienceList. I could not reproduce in a clean project.
Error message (project specific info stripped)
Error: Fatal error: [...\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp] [Line: 273] Renaming an object ('ABCDEF' /Engine/Transient.ABCDEF_C_1) on top of an existing object (ABCDEF_Old_C /Game/<Map>/<MyBP>.<MyBP>_C:ChildActor_GEN_VARIABLE.ChildActor_GEN_VARIABLE_ABCDEF_C_CAT)
Steps to Reproduce
In Lyra 5.4 (could not reproduce in a clean project)
1. Opened a blueprint in editor (in this case it was B_ExperienceList3D but that shouldn't matter)
2. Added a scene component to blueprint
3. attached a child actor to that scene component
4. Set 'Child Actor Class' to a different blueprint class (will refer to as BP_A)
5. Open content browser, navigate to a different blueprint class and select it. (will refer to as BP_B)
6. In the edited blueprint, hit the 'Child Actor Class' arrow with tooltip 'Use Selected Asset from Content Browser'
7. In the content browser, navigate back to BP_A and select it.
8. In the edited blueprint, hit the 'Child Actor Class' arrow with tooltip 'Use Selected Asset from Content Browser' again to switch back to the BP_A reference.
9. Crash
> UnrealEditor-CoreUObject.dll!UObject::Rename(const wchar_t * InName, UObject * NewOuter, unsigned int Flags) Line 273 C++
UnrealEditor-Engine.dll!AActor::Rename(const wchar_t * InName, UObject * NewOuter, unsigned int Flags) Line 1413 C++
UnrealEditor-Engine.dll!UChildActorComponent::SetChildActorClass(TSubclassOf<AActor> Class, AActor * ActorTemplate) Line 569 C++
UnrealEditor-Engine.dll!UChildActorComponent::SetChildActorClass(TSubclassOf<AActor> InClass) Line 98 C++
UnrealEditor-Engine.dll!UChildActorComponent::PostEditChangeChainProperty(FPropertyChangedChainEvent & PropertyChangedEvent) Line 266 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!FPropertyNode::NotifyPostChange::__l14::<lambda_1>::operator()(UObject *) Line 3078 C++
UnrealEditor-PropertyEditor.dll!FPropertyNode::NotifyPostChange(FPropertyChangedEvent & InPropertyChangedEvent, FNotifyHook * InNotifyHook) Line 3082 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const TArray<FObjectBaseAddress,TSizedDefaultAllocator<32>> & InObjects, const TArray<FString,TSizedDefaultAllocator<32>> & InValues, FPropertyNode * InPropertyNode, unsigned int Flags) Line 565 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const FString & InValue, FPropertyNode * InPropertyNode, unsigned int Flags)
Line 251 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::SetValueAsString(const FString & InValue, unsigned int Flags) Line 864 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!FPropertyHandleBase::SetValueFromFormattedString(const FString &) Line 2539 C++
UnrealEditor-PropertyEditor.dll!FPropertyHandleObject::SetValueFromFormattedString(const FString & InValue, unsigned int Flags, bool bSkipResolve) Line 4322 C++
UnrealEditor-PropertyEditor.dll!FPropertyHandleObject::SetObjectValueFromSelection() Line 4377 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!Invoke(void(FPropertyEditor::*)() PtrMemFun, FPropertyEditor * &) Line 66 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(FPropertyEditor::*)() &) Line 309 C++
UnrealEditor-PropertyEditor.dll!V::TBaseSPMethodDelegateInstance::ExecuteIfSafe() Line 298 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 570 C++
UnrealEditor-PropertyEditor.dll!PropertyCustomizationHelpers::SPropertyEditorButton::OnClick()
(I've removed the rest because of character limit)
How does TextureRenderTarget2D get TArray<uint8> type data?
How do I set a material as a post-processing material?
Why does the REMOVE method of map container remove elements have memory leaks?
What is the difference between Camera and CineCamera?
How to delete some elements correctly when deleting an array loop?
What is the cause of the packaging error falling back to 'GameUserSettings' in ue5?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-224026 in the post.
1 |
Component | UE - Gameplay - Components |
---|---|
Affects Versions | 5.4 |
Target Fix | 5.6 |
Created | Sep 11, 2024 |
---|---|
Updated | Sep 26, 2024 |