-
Notifications
You must be signed in to change notification settings - Fork 0
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
IPC causes spurious awakes of the executor #2
Comments
Is this fixed / captured by the PR that was just merged, or is this a separate issue? Additionally, if this is a separate issue, what impact does it have on the executor? Also, what fix would you suggest. Is there another check besides |
This is a separate issue from the PR created by @mauropasse . I agree with you that the impact should no be that much, anyhow, I'm creating some tests for exactly measuring it. Unfortunately I don't have a solution at the moment, I opened this ticket mainly to make you aware of the issue. |
I'm investigating spurious awakes in both the standard and this executor.
See ros2/rclcpp#1021 for the standard executor
The problem mentioned in the ticket above does not appear in the static executor when I run that dummy executable with only 1 timer.
However, if I run a system made of 2 nodes (1 pub and 1 sub) in the same executor with IPC on, I see the exact same pattern.
I think that the root cause is how the static executor handles the waitable objects:
in each "iteration" of the static executor:
is_ready()
condition, that in this case consists in checking if the buffer is not empty. Since a message has just been pushed, the IPC subscription is invoked.@MartinCornelis2 what do you think? I think that this problem with IPC is not present with the standard executor because only 1 item is processed in every iteration and the waitables are managed by the memory strategy.
The text was updated successfully, but these errors were encountered: