Improve closing behavior when attempting to close a device implementing the service interface #3100
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I am implementing a device which can close prematurely depending on the internal state. I want
yarpdev
to be notified when this happens and close consequently.In order to have this behavior, I implemented the
IService
interface. But then, if I press CTRL+C in theyarpdev
terminal, it seems to always get stuck, and then I have to kill theyarpdev
process. The last message wasAfter some debugging, I noticed that when the signal handler was setting the static flag "terminated" to true, it was also attempting to close immediately the terminator port. But the terminator port is receiving the termination message and some race condition seemed to occur on Windows.
If we avoid to set the
terminated
flag from the signal handler and instead we wait for the termination port to do its job, thenyarpdev
closes smoothly without issues.cc @randaz81 @Nicogene @traversaro