-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow 'expired system timers' to be cancelled before execution. #22372
Conversation
…d without interfering with any previous message send
1.0 Acceptance: high value fix (fixes test flakyness and potential use after free) |
class LoopbackTransport : public Transport::Base | ||
{ | ||
private: | ||
// Use unique pointers for work callbacks, so that one callback does not cancel another. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a workaround for the real issue, which is that ScheduleWork on the select impl is broken. We should be fixing that, not working around it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes... did not try to yak shave into that one...
PR #22372: Size comparison from 3522317 to f1fdaf4 Increases (21 builds for bl602, cc13x2_26x2, esp32, linux, nrfconnect, psoc6, telink)
Decreases (5 builds for cc13x2_26x2, esp32, psoc6)
Full report (45 builds for bl602, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
|
Closing as duplicate with #22375 and that one fixes more (fixes ScheduleWork too) |
Problem
SystemTimers cannot be reliably cancelled for socket impl.
Specifically to avoid starvation, system timers keeps a list of 'active timers' and that is not cancelable.
Change overview
Fixes #22160
Fixes #19387
Testing
Unit tests. CI will also validate.