Description

A number of places in the code rely on raw UProperty pointers to track properties they care about. This can present issues when BPs inherit from other BPs, because the parent's class may be Purged / Regenerated (among other issues). This can leave dangling references to the old properties.

Continuing from the ensure causes the Components Hierarchy View (and likely other things) to become broken (see the attached image).

Seems like [Link Removed] is likely caused by the same (or a similar) issue. E.G. in UClass::Link, we track properties in ClassReps. If any of the properties get deleted after Link is called for whatever reason, it would cause that crash.

Steps to Reproduce
  1. Create a new BP only project.
  2. Create a BP from Character (DO NOT SAVE).
  3. Create a Child BP from the original (DO NOT SAVE).
  4. Open both BPs.
  5. In the Base BP, add a bool property.
  6. Compile and Save the Base BP.
  7. In the Base BP, change the bool property so that its replicated.
  8. Compile and Save the Base BP.
  9. Attempt to switch tabs to the Child BP.

EXPECTED:
The Child BP would open with no issues.

ACTUAL:
An ensure is thrown because the bool property in the Parent class is invalid (non-null, but IsValidLowLevel returns false).

*Notes*, Starting from Character and using a Bool property are probably not important. However, doing 2 separate Compile and Save steps on the Parent while not compiling and saving the child is.

Have Comments or More Details?

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

2
Login to Vote

Cannot Reproduce
ComponentUE - Gameplay - Blueprint Compiler
Affects Versions4.16
Target Fix4.17
CreatedJun 6, 2017
ResolvedJun 14, 2017
UpdatedApr 27, 2018
View Jira Issue