ULocalPlayerSaveGame::AsyncSaveGameToSlotForLocalPlayer was designed to properly support multiple in flight requests at the same time, but the current code does not work correctly and this can cause an ensure if two saves are requested at the same time. The issue is that ProcessSaveComplete does not use the SaveRequest variable it is passed and instead uses the CurrentSaveRequest which might be out of date when processing the first save completion. The behavior appears to work correctly, other than that it fires an ensure and may cause confusion if a failure happens right after a success.
One reasonable fix is to change the setting of LastSuccessful/ErrorSaveRequest to use SaveRequest instead of CurrentSaveRequest:
if (bSuccess) { ensure(CurrentSaveRequest > LastSuccessfulSaveRequest); LastSuccessfulSaveRequest = SaveRequest; } else { ensure(CurrentSaveRequest > LastErrorSaveRequest); LastErrorSaveRequest = SaveRequest; }
General repro from external customer:
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-353812 in the post.
| 0 |
| Component | UE - Gameplay |
|---|---|
| Affects Versions | 5.7 |
| Target Fix | 5.8 |
| Created | Nov 14, 2025 |
|---|---|
| Updated | Nov 14, 2025 |