Description

When using the Property Access node on Animation Blueprints to gain performance by better exploring parallel processing, it is possible that the underlying accessed property or any intermediate accessor functions get renamed in the Editor. This correctly results in the Property Access node being marked with a warning, and sometimes with an actual compilation error when more than one part of the path to the property gets renamed. However, in some situations, this might trigger a crash, seemingly by attempting to access an already-destroyed object. This behavior might involve multithreading, which might make it more complex to diagnose and resolve, but it is consistently reproducible on the Lyra Starter Game project in UE 5.3.

 

Steps to Reproduce
  • Open the Lyra Starter Game project in UE 5.3
  • Open assets to make sure they are loaded:
  • "B_Hero_Default" from "/Game/Characters/Heroes/"
  • "ABP_Mannequin_Base" from "/Game/Characters/Heroes/Mannequin/Animations/"
  • "ABP_ItemAnimLayersBase" from "/Game/Characters/Heroes/Mannequin/Animations/LinkedLayers/"
  • Edit "ABP_Mannequin_Base":
  • Create a new function "TryGetCharacterOwner". Mark it as "Pure" and "Thread Safe" in the Details Panel. Implementation:
  • Add a "Property Access" node
  • Use the dropdown on the node to bind it to "TryGetPawnOwner"
  • Cast the result to "B_Hero_Default". Convert to pure cast.
  • Add a return node. Drag the result of the cast to it. Change the output name to "ReturnValue" exactly.
  • Compile and save
  • Edit "ABP_ItemAnimLayersBase":
  • Edit animation layer "Full Body Aiming" from "My Blueprint – Animation Layers – Item Anim Layers"
  • Add a "Property Access" node below the initial node ("Input Pose")
  • Use the dropdown on the node to bind it to "GetMainAnimBPThreadSafe.TryGetCharacterOwner.RagdollImpulseStrength"
  • Drag the wire connection from "Input Pose – Aim Pitch" to the output pin of the new Property Access node, so that this Property Access node becomes relevant to the graph.
  • Compile and save
  • Edit "ABP_Mannequin_Base":
  • Rename function "TryGetCharacterOwner" to anything else
  • Compile – CRASH!
  • Notes:
  • The crash reported by the licensee is the linked case is different, but likely closely related.
  • To reproduce a scenario more similar to their crash:
  • Create a new float variable in "B_Hero_Default" and access that instead of "RagdollImpulseStrength" in the "ABP_ItemAnimLayersBase" graph.
  • After compiling and saving everything, rename the new float variable in "B_Hero_Default". Compile but do not save.
  • Enter PIE. In my tests, this did not result in a consistent crash, but it did crash after playing around with variable renames and other changes to the character blueprint.
  • The licensee did a little extra investigation on the issue, see linked case for details.

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Anim - Runtime
Affects Versions5.3.2
Target Fix5.4
Fix Commit31251549
Main Commit31430030
Release Commit31429174
CreatedJan 24, 2024
ResolvedFeb 7, 2024
UpdatedFeb 23, 2024