Skip to content

Fix Event::set() re-entrant infinite loop#37

Merged
otamachan merged 1 commit intomainfrom
fix/event-set-reentrant-loop
Mar 21, 2026
Merged

Fix Event::set() re-entrant infinite loop#37
otamachan merged 1 commit intomainfrom
fix/event-set-reentrant-loop

Conversation

@otamachan
Copy link
Owner

When a resumed waiter re-registers via clear() + wait() inside set()'s while loop, waiters_ never becomes empty, causing an infinite loop. Swap waiters_ into a local queue before iterating so new waiters added during resume() are deferred to the next set() call.

When a resumed waiter re-registers via clear() + wait() inside set()'s
while loop, waiters_ never becomes empty, causing an infinite loop.
Swap waiters_ into a local queue before iterating so new waiters added
during resume() are deferred to the next set() call.
@otamachan otamachan force-pushed the fix/event-set-reentrant-loop branch from b57ebed to 240e393 Compare March 21, 2026 09:41
@otamachan otamachan merged commit 9387a61 into main Mar 21, 2026
2 checks passed
@otamachan otamachan deleted the fix/event-set-reentrant-loop branch March 21, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant