Skip to content

Fix windows regression: Increase clock accuracy#1564

Merged
ahcorde merged 1 commit into
ros2:rollingfrom
Flova:patch-1
Dec 16, 2025
Merged

Fix windows regression: Increase clock accuracy#1564
ahcorde merged 1 commit into
ros2:rollingfrom
Flova:patch-1

Conversation

@Flova
Copy link
Copy Markdown
Contributor

@Flova Flova commented Dec 12, 2025

Description

The changes in #1469 added a test, which uses time.monotonic() and threading.Event().wait(0.1). Both use the default windows timer which only has a resolution of ~15ms, leading to a failed assertion. For a more detailed discussion see: #1563

Fixes #1562

Is this user-facing behavior change?

No

Did you use Generative AI?

No

Additional Information

Signed-off-by: Florian Vahl <[email protected]>
@ahcorde
Copy link
Copy Markdown
Contributor

ahcorde commented Dec 12, 2025

Pulls: #1564
Gist: https://gist.githubusercontent.com/ahcorde/794fc3292379d642a10bfbf4eed23589/raw/cb20c1ae9cdb2bf22fa1d1cb6385f626f3bca54b/ros2.repos
BUILD args: --packages-above-and-dependencies rclpy
TEST args: --packages-above rclpy
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/17766

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@Flova
Copy link
Copy Markdown
Contributor Author

Flova commented Dec 12, 2025

The test failure seems to be unrelated

@Flova
Copy link
Copy Markdown
Contributor Author

Flova commented Dec 15, 2025

The failed windows test is different now, but it seems to be the same root cause (a low timer resolution). In that case it is not the sleep that exits early or is measured with a low res clock, instead the ROS timer seems to be triggered early.

@fujitatomoya
Copy link
Copy Markdown
Collaborator

fujitatomoya commented Dec 15, 2025

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@ahcorde ahcorde merged commit cec6725 into ros2:rolling Dec 16, 2025
2 of 3 checks passed
@Flova Flova deleted the patch-1 branch December 16, 2025 09:28
bjsowa pushed a commit to bjsowa/rclpy that referenced this pull request Jan 11, 2026
bjsowa pushed a commit to bjsowa/rclpy that referenced this pull request Jan 11, 2026
InvincibleRMC pushed a commit to InvincibleRMC/rclpy that referenced this pull request Jan 12, 2026
Signed-off-by: Florian Vahl <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>
InvincibleRMC added a commit that referenced this pull request Jan 21, 2026
)

* Fix warnings from gcc. (#1501)

Signed-off-by: Michael Carlstrom <[email protected]>

* Update type_support to use new abcs

Signed-off-by: Michael Carlstrom <[email protected]>

* Cleanup old test cases to use new automatic inference

Signed-off-by: Michael Carlstrom <[email protected]>

* Add content-filtered-topic interfaces (#1506)

Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Added lock to protect futures for multithreaded executor (#1477)

Signed-off-by: brennanmk <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* EventsExecutor: Handle async callbacks for services and subscriptions (#1478)

Closes #1473

Signed-off-by: Brad Martin <[email protected]>
Co-authored-by: Brad Martin <[email protected]>
Co-authored-by: Alejandro Hernandez Cordero <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* add spinning state for the Executor classes. (#1510)

Signed-off-by: Tomoya.Fujita <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Fixes Action.*_async futures never complete (#1308)

Per rclpy:1123 If two seperate client server actions are running in seperate executors the future given to the ActionClient will never complete due to a race condition
This fixes  the calls to rcl handles potentially leading to deadlock scenarios by adding locks to there references
Co-authored-by: Aditya Agarwal <[email protected]>
Co-authored-by: Jonathan Blixt <[email protected]>
Signed-off-by: Jonathan Blixt <[email protected]>

Co-authored-by: Alejandro Hernandez Cordero <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* remove unused 'param_type' (#1524)

'param_type' is set but never used

Signed-off-by: Christian Rauch <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Changelog

Signed-off-by: Alejandro Hernandez Cordero <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* 10.0.1

Signed-off-by: Michael Carlstrom <[email protected]>

* Remove duplicate future handling from send_goal_async (#1532)

A recent change intended to move this logic into a lock context, but
actually ended up duplicating it instead. This fixes that by removing
the duplicated logic outside of the lock. It also preserves the explicit
typing annotation on the future.

Signed-off-by: Nathan Wiebe Neufeldt <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* fix(test_events_executor): destroy all nodes before shutdown (#1538)

Signed-off-by: yuanyuyuan <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* add BaseImpl

Signed-off-by: Michael Carlstrom <[email protected]>

* Add ImplT Support

Signed-off-by: Michael Carlstrom <[email protected]>

* fix changelong

Signed-off-by: Michael Carlstrom <[email protected]>

* Remove accidental tuple (#1542)

Signed-off-by: Michael Carlstrom <[email protected]>

* Allow action servers without execute callback (#1219)

Signed-off-by: Tim Clephas <[email protected]>

* add : get clients, servers info (#1307)

Signed-off-by: Minju, Lee <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* 10.0.2

Signed-off-by: Michael Carlstrom <[email protected]>

* update tests

Signed-off-by: Michael Carlstrom <[email protected]>

* ParameterEventHandler support ContentFiltering (#1531)

* ParameterEventHandler support ContentFiltering

Signed-off-by: Barry Xu <[email protected]>

* Address review comments

Signed-off-by: Barry Xu <[email protected]>

---------

Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Fix issues with resuming async tasks awaiting a future (#1469)

Signed-off-by: Błażej Sowa <[email protected]>
Signed-off-by: Nadav Elkabets <[email protected]>
Co-authored-by: Nadav Elkabets <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* 10.0.3

Signed-off-by: Michael Carroll <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Increase clock accuracy (#1564)

Signed-off-by: Florian Vahl <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Use unconditional wait when possible. (#1563)

Previously the max() value of the steady time was used as the default deadline. In some environments this results in overflows in the underlying pthread_cond_timedwait call, which waits for the conditional variable in the events queue implementation. Consequently, this lead to freezes in the executor. Reducing the deadline significantly helped, but using `cv.wait` instead of `cv_.wait_until` seems to be the cleaner solution.

Signed-off-by: Florian Vahl <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Remove default from switch with enum, so that compiler warns. (#1566)

Signed-off-by: Tomoya Fujita <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Fix parameter parsing for unspecified target nodes (#1552)

Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Improve the compatibility of processing YAML parameter files (#1548)

Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Improve wildcard parsing and optimize the logic for parsing YAML para… (#1571)

Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Expose action graph functions as Node class methods. (#1574)

* Expose action graph functions as Node class methods.

Signed-off-by: Tomoya Fujita <[email protected]>

* address review comments to keep the warning consistent.

Signed-off-by: Tomoya.Fujita <[email protected]>

---------

Signed-off-by: Tomoya Fujita <[email protected]>
Signed-off-by: Tomoya.Fujita <[email protected]>

* Fix performance bug in MultiThreadedExecutor (hopefully) (#1547)

Signed-off-by: Michael Tandy <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* Changelog

Signed-off-by: Alejandro Hernandez Cordero <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

* 10.0.4

Signed-off-by: Michael Carlstrom <[email protected]>

* use Msg over BaseMessage

Signed-off-by: Michael Carlstrom <[email protected]>

* Use Srv over BaseService

Signed-off-by: Michael Carlstrom <[email protected]>

* Use Action over BaseAction

Signed-off-by: Michael Carlstrom <[email protected]>

* lint

Signed-off-by: Michael Carlstrom <[email protected]>

* Update rclpy/rclpy/type_support.py

Co-authored-by: Christophe Bedard <[email protected]>
Signed-off-by: Michael Carlstrom <[email protected]>

---------

Signed-off-by: Michael Carlstrom <[email protected]>
Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: brennanmk <[email protected]>
Signed-off-by: Brad Martin <[email protected]>
Signed-off-by: Tomoya.Fujita <[email protected]>
Signed-off-by: Christian Rauch <[email protected]>
Signed-off-by: Alejandro Hernandez Cordero <[email protected]>
Signed-off-by: Nathan Wiebe Neufeldt <[email protected]>
Signed-off-by: yuanyuyuan <[email protected]>
Signed-off-by: Tim Clephas <[email protected]>
Signed-off-by: Minju, Lee <[email protected]>
Signed-off-by: Barry Xu <[email protected]>
Signed-off-by: Błażej Sowa <[email protected]>
Signed-off-by: Nadav Elkabets <[email protected]>
Signed-off-by: Michael Carroll <[email protected]>
Signed-off-by: Florian Vahl <[email protected]>
Signed-off-by: Florian Vahl <[email protected]>
Signed-off-by: Tomoya Fujita <[email protected]>
Signed-off-by: Tomoya.Fujita <[email protected]>
Signed-off-by: Michael Tandy <[email protected]>
Co-authored-by: Chris Lalancette <[email protected]>
Co-authored-by: Barry Xu <[email protected]>
Co-authored-by: Brennan Miller-Klugman <[email protected]>
Co-authored-by: Brad Martin <[email protected]>
Co-authored-by: Brad Martin <[email protected]>
Co-authored-by: Alejandro Hernandez Cordero <[email protected]>
Co-authored-by: Tomoya Fujita <[email protected]>
Co-authored-by: Jonathan <[email protected]>
Co-authored-by: Christian Rauch <[email protected]>
Co-authored-by: Nathan Wiebe Neufeldt <[email protected]>
Co-authored-by: Yuyuan Yuan <[email protected]>
Co-authored-by: Tim Clephas <[email protected]>
Co-authored-by: Minju, Lee <[email protected]>
Co-authored-by: Błażej Sowa <[email protected]>
Co-authored-by: Nadav Elkabets <[email protected]>
Co-authored-by: Michael Carroll <[email protected]>
Co-authored-by: Florian Vahl <[email protected]>
Co-authored-by: Michael Tandy <[email protected]>
Co-authored-by: Christophe Bedard <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

👩‍🌾 Regression on TestExecutor.test_create_task_coroutine_wake_from_another_thread

3 participants