Description

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.

 

Steps to Reproduce
  • In any UE 5.3 project, create a new C++ class and implement it exactly as described by the licensee in the linked case's provided code snippet.
  • Open the project
  • Create and edit a new Actor Blueprint
  • In the BP editor:
  • add the C++ TestComponent to the blueprint, and select it
  • in the details panel:
  • On "Test Component – Container", select "Test Container" in the dropdown.
  • On "Test Component – Container – Test Container – Struct Member", change the integer value of "Foo Bar" and press enter

Have Comments or More Details?

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

2
Login to Vote

Fixed
ComponentUE - Editor
Affects Versions5.3.2
Target Fix5.4
Fix Commit31093315
Main Commit31093438
Release Commit31093344
CreatedJan 24, 2024
ResolvedFeb 1, 2024
UpdatedApr 2, 2024