No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro github showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/robosoft-ai/SMACC2.git
VCS Type git
VCS Version jazzy
Last Updated 2026-11-12
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: the forced-finish cycle at 100 ms. StA cuts a 30 s sleep short with a 100 ms timer, so every exit holds the state machine thread for the forced-finish wait and then creates StB's 100 ms loop timer; the polling loop's executor has to pick that timer up or the machine never leaves StB. A missed hand-off shows as a gap in the state entries.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_timer_handoff_1

Core test for the hand-off of a timer created on the state machine thread to the executor in the signal detector’s polling loop. It is sm_coretest_forced_finish_1’s cycle run at 100 ms instead of 1 s, which is the shape that reproduced the missed hand-off (finding W): a plain two-state timer ping-pong with no forced finish did not.

What it does

StA  ──EvCountdownEnd──▶  StB  ──EvTimer<CbTimerCountdownLoop>──▶  StA

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(100ms) in OrTimer, with an SrEventCountdown(1) reactor on the timer event. The timer always wins, so every StA exit forces the sleep to finish: the state machine thread holds the exit for the forced-finish wait, then enters StB, whose CbTimerCountdownLoop(100ms) creates a new ROS timer in its onEntry.
  • The polling loop’s executor has to pick that timer up. A hand-off it misses leaves the timer ready and never executed, and the machine sits in StB for good.
  • About three cycles a second; a healthy 60 s run logs some 300 Entered lines with no gap longer than a cycle. The gate’s invariant is the gap: no two consecutive state entries more than 5 s apart, and the last one within 5 s of the interrupt.

Running it

ros2 launch sm_coretest_timer_handoff_1 sm_coretest_timer_handoff_1.launch.py

Output is teed to /tmp/sm_coretest_timer_handoff_1_latest.log. The plain build is the one that matters: the sanitizer allocators delay the reuse of freed memory, and the race this test exists for has only ever shown in a plain build.

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged sm_coretest_timer_handoff_1 at Robotics Stack Exchange