-
Notifications
You must be signed in to change notification settings - Fork 15
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
Fix issue with unlink teardown behavior #774
Conversation
This pull request highlights a problem with the way that unlink teardown occurs, specifically during signal unregistration. Fix this problem.
Any questions on this one @veronicaz41? |
Still looking at this. Will ask you on slack if I have question. |
Ah, in this case |
That's the image guarantee. If I have signal B, and I assert B, then all handlers on B at the time of the call must be asserted, even if one of the handlers removes another handler. The reason for this is that I don't want nondeterministic cases where the order where signal handlers are called affects how many signal handlers are called. |
0b7ebf8
to
81aae7d
Compare
Make sense 👍 Ready for review. |
This solution is correct, excellent work. Can you find a way to implement it that does not require any modification to |
ok |
fbf46fa
to
64900c9
Compare
d3a12aa
to
9cef5a7
Compare
break; | ||
} | ||
|
||
if (m_state == SignalState::Free) return; |
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.
I'm not so sure this is the right answer anymore. Comparing to m_state
directly like this is pretty unsafe unless you're doing it in a loop, which we are not.
Fix issue with unlink teardown behavior
This pull request highlights a problem with the way that unlink teardown occurs, specifically during signal unregistration. Fix this problem.