I’m currently investigating a new crash that started appearing after updating to 5.7.3. It affects the dedicated server (Linux); I’m not yet sure whether clients are impacted.
Due to the nature of the issue, I haven’t been able to link it to specific content or provide reliable repro steps. However, I do have a call stack that may be helpful.
I also tested the changes from the 5.8 branch, but the issue persists.
I’d like to ask if this is something you’re already aware of. If so, is there any temporary workaround or fix available?
This crash appears to be related to render pipes (FRenderCommandList::ReleasePipeRefs) so a quick workaround might be to test with r.RenderCommandPipeMode=0.
We did have another fix related to UWorld::SendAllEndOfFrameUpdatesInternal, however it looks like it may not fully address the issue you’re reporting:
CL#52065079 (9ca194) Fix crash in SendAllEndOfFrameUpdates when OnPreEndOfFrameSync pumps game-thread tasks.
OnPreEndOfFrameSync (e.g. cloth simulation) can call WaitUntilTaskCompletes, which
retracts game-thread tasks. Those tasks may call MarkActorComponentForNeede…
The current theory with what you’re seeing is that with single-threaded rendering or when ShouldExecuteOnRenderThread() returns false, the render thread pipe processes synchronously, calling ReleasePipeRef() inline. If other pipe tasks also complete by that point (either inline during UE::Tasks::Launch or on fast worker threads), the combined releases can drive NumPipeRefs to zero and delete “this”. Then the game thread continues past the enqueue, reaches ReleasePipeRefs and writes to poisoned memory.
I’m passing this issue to my colleague who is more familiar with this system.