Crash in UMoverNetworkPredictionLiaisonComponent::ReadPresentationSyncState due to dangling sync state pointer

We have a project on Unreal 5.5.4, in which we are using Mover and our own systems using NPP.

After some time, we started experiencing random crashes in UMoverNetworkPredictionLiaisonComponent::ReadPresentationSyncState coming from a call in UBasedMovementUtils::UpdateSimpleBasedMovement. The crashes appear to be due to FNetworkPredictionStateView::PendingSyncState containing a dangling pointer.

Tracking back to where these pointers are set, in TFixedSmoothingService::RegisterInstance, it appears that this code doesn’t account for the fact that calling InsertUninitialized on the Instances TSparseArray may reallocate the underlying TArray data and cause the pointers in other instances’ FNetworkPredictionStateView to dangle.

We can work around this by reserving a sufficient capacity on the TSparseArray to prevent reallocation, but I believe a proper fix would avoid the reliance on cached pointers in FNetworkPredictionStateView.

Please could you let us know if it’s a known issue, or otherwise open a bug? Thanks :slight_smile:

Steps to Reproduce
Create a level in which Actors with a MoverComponent are continually spawned. This can be reproduced in PIE or standalone (any net mode).

This is a new issue that we haven’t encountered before. Thanks for reporting it!

Once it becomes public, you’ll be able to track it here:

Good to know it’s tracked now, thanks!