Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_coretest_poll_shutdown_1 at Robotics Stack Exchange
Package Summary
| Version | 3.1.0 |
| 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-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
sm_coretest_poll_shutdown_1
Core test for the signal detector’s polling loop under a concurrent rclcpp shutdown. It makes
the shutdown land, in most runs, between the loop’s rclcpp::ok() check and its
rclcpp::Rate::sleep(), which is the window in which rclcpp::Clock::sleep_until throws
std::runtime_error("context cannot be slept with because it's invalid").
Design
-
ClSlowUpdate(inOrSlow) is anISmaccUpdatableclient whoseupdate()blocks forslow_update_ms(default 150).SignalDetector::pollOncecalls it on the polling thread, inside the window. - The polling period is set with the core parameter
signal_detector_loop_freq; the launch file uses 5 Hz. With a 150 ms update in a 200 ms period, 75 % of each period is window. - The update must stay shorter than the period.
rclcpp::Rate::sleep()returns without sleeping when the iteration overran, and then never reaches the throwing call; a run that overruns cannot show the defect and cannot prove its absence. -
StIdleis the only state and has no transitions, so the state machine thread is idle and the polling thread is the only one doing work.
Pass criteria
Send SIGINT at a random moment while StIdle is active and wait for the process to exit.
- Exit status 0, with
Polling loop exited,Shutdown completeandFinishing State Machinein the log. - No
terminate calledline and nocontext cannot be sleptline. - Under AddressSanitizer the leak check runs at exit.
The failure signature is terminate called after throwing an instance of 'std::runtime_error'
with what(): context cannot be slept with because it's invalid, exit status 134, logged right
after the shutdown callback’s Terminating scheduler... line and with no Polling loop exited
line. With the launch file’s parameters it appears in about three runs out of four.
Running
Plain:
ros2 launch sm_coretest_poll_shutdown_1 sm_coretest_poll_shutdown_1.launch.py
The launch file tees the node output to /tmp/sm_coretest_poll_shutdown_1_latest.log.
For sanitizer runs, build in a separate build and install base with the sanitizer flags and run the node binary directly, passing the parameters on the command line:
install_asan/sm_coretest_poll_shutdown_1/lib/sm_coretest_poll_shutdown_1/sm_coretest_poll_shutdown_1_node \
--ros-args --log-level INFO -p signal_detector_loop_freq:=5.0 -p slow_update_ms:=150
ASAN_OPTIONS=handle_abort=1 prints the stack of the aborting thread, which shows where the
exception came from.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| rclcpp |