fix(ping_client, ping_server): wait major frame after sampling port error #104
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.
The behaviour of the ping example is indeterministic. Sometimes the ping will succeed on the first attempt, while some other times it will take an extended amount of time (>5-10s not being rare).
This happens because both
ping_server
andping_client
callcontinue
after failing to receive a message from both sampling channels.This in turn causes them to keep trying to receive messages continuously, which is likely to cause them being frozen by the hypervisor in some invalid state.
This indeterministic behaviour is prevented by this PR, by making both periodic processes wait for the next major frame after failing to receive a message.