Skip to content

Fix notification stalls after timeouts - #147

Merged
ventZl merged 8 commits into
masterfrom
fix/notify-timeout-fixes
Mar 11, 2026
Merged

Fix notification stalls after timeouts#147
ventZl merged 8 commits into
masterfrom
fix/notify-timeout-fixes

Conversation

@ventZl

@ventZl ventZl commented Mar 11, 2026

Copy link
Copy Markdown
Owner

If wait for object timed out, then the thread wasn't removed from list of waiting threads. This caused subsequent notifications to stall as notify_object assumed that someone is already waiting for notification so it did not queue it.

This exposed another bug in algorithm library where array-delete iterator name was too generic and could cause to shadow exactly the variable which was used to initialize it.

Two more complains by static analyzer were fixed which prevent out of bounds access in code. One of them has potential to speed notification processing a bit in case that there is no thread waiting for notification.

ventZl added 8 commits March 7, 2026 00:12
In cases where ARRAY_DELETE template is used inside another loop
iterators may clash causing internal iterator being initialized by
random value rather than intended initialization value.
Mark code after failed as unreachable. Improves reasoning of newer
versions of clang-tidy which tends to complain about errors in code
after assert.
If there are no waiters for given notification then don't try to search
timers.
If no existing timer entry was found while timer is configured then
don't examine offset given. This was achieved by swapping operands
inside if statement, so that if offset given is out of range it won't be
used to access array content.
After kernel was shutdown, code flow doesn't continue here. Mutes some
static analyzer errors.
If notification times out then remove the waiting thread from
notification waitlist.
@ventZl
ventZl merged commit f7cdf63 into master Mar 11, 2026
6 checks passed
@ventZl
ventZl deleted the fix/notify-timeout-fixes branch March 11, 2026 12:54
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