Commit 178c5b6
Wrap all enqueue methods in try/finally for exception safety
Move BeginInflightEnqueue() right after epoch.Resume() and wrap the enqueue
body in try/finally so that EndInflightEnqueue() + epoch.Suspend() always
execute, even if payload serialization, SetHeader, or commitNum checks throw.
Without this, an exception between Begin and End would leave the inflight
slot pinned at a low address, permanently preventing SafeTailAddress from
advancing past that point and stalling all uncommitted scan iterators.
15 methods fixed: 9 TryEnqueue variants (moved Begin up, wrapped in try/
finally) and 6 void Enqueue variants using AllocateBlock (wrapped post-
AllocateBlock payload writes in try, moved End+Suspend to finally).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent c4855e4 commit 178c5b6
1 file changed
Lines changed: 259 additions & 196 deletions
0 commit comments