Description

When an actor channel is cleaned up, the actor and its subobjects in the CreateSubObjects array are destroyed/marked as garbage in DestroyActorAndComponents. However, default subobjects are not added to the CreateSubObjects, and so these won't be marked as garbage when the actor channel is cleaned up. If the actor comes back into relevancy on the client before garbage collection is run, it seems as though the package map will get the reference to the old default subobject when serializing its NetGuid, rather than the newly created actor's subobject.

Steps to Reproduce

Dynamically spawn a replicated actor with a replicated default subobject into a world partition cell.
Travel into that cell and then back out, so the actor's channel is closed and cleaned up, destroying the actor.
Before garbage collection happens, travel back into the cell.
Expected: a new instance of the actor/subobject is serialized on the client for the associated NetGuids
Actual: a new instance of the actor is spawned, but the package map loads and serializes the first actor's subobject for the associated NetGuid

Have Comments or More Details?

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

1
Login to Vote

Unresolved
ComponentUE - Networking
Affects Versions5.4
Target Fix5.5
CreatedAug 15, 2023
UpdatedFeb 23, 2024