When implementing a USceneComponent in C++, one may want to add one or more internal UObjects to hold some data or perform specific tasks (this is also done by several UE built-in components). These internal UObject properties can be decorated with "UPROPERTY(Instanced)", and their class with "UCLASS(EditInlineNew)", which allows them to be picked and configured directly from a Details Panel within the Editor. An internal UObject can itself contain a USTRUCT decorated with UPROPERTY(EditAnywhere), and editing its members directly within a Details Panel worked well in UE 5.2. However, in UE 5.3, editing the members of such a USTRUCT may trigger an access to an invalid address, which can crash the engine.
The invalid access seems to happen during UObject::PropagatePostEditChange() in [Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:640]. On line 692, the call to ChangedProperty->Identical_InContainer() attempts to compare a (correct) pointer to the internal UObject and an (incorrect) pointer to its owner USceneComponent. The function then proceeds to access the memory location of the struct member offset from the wrong base address.
How does TextureRenderTarget2D get TArray<uint8> type data?
How to delete some elements correctly when deleting an array loop?
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 use the.usf file in the ue4 engine Shader in the material?
How to convert the datasmith scene file to BluePrint. Create animations in BluePrint.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-204807 in the post.
2 |
Component | UE - Editor |
---|---|
Affects Versions | 5.3.2 |
Target Fix | 5.4 |
Created | Jan 24, 2024 |
---|---|
Resolved | Feb 1, 2024 |
Updated | Jun 28, 2024 |