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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange

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

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-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Core test: an asynchronous client behavior forced to finish by a transition on every cycle. Drives requestForceFinish/isShutdownRequested, the stateMachineCurrentAction discard check and the CURRENT_STATE event discard path in ISmaccStateMachine::postEvent.

Maintainers

  • Brett Aldrich

Authors

No additional authors.

sm_coretest_forced_finish_1

Core test for the forced finish of an asynchronous client behavior. It is not a reference state machine; it exists to drive one core code path on demand, like sm_coretest_transition_speed_1 next to it.

What it does

StA  ──EvCountdownEnd──▶  StRest  ──EvTimer<CbTimerCountdownLoop>──▶  StA
 │                          │
 └── EvCbSuccess/EvCbFinished<CbSleepFor, OrSleep> ──▶ StTrap (terminal) ◀──┘

  • StA runs CbSleepFor(30s) in OrSleep and CbTimerCountdownOnce(1s) in OrTimer, plus an SrEventCountdown(1) reactor on the timer event. The timer always wins, so on every StA exit the state machine thread calls requestForceFinish() on the sleep behavior while its onEntry thread polls isShutdownRequested(). The behavior then posts EvCbSuccess and EvCbFinished with CURRENT_STATE lifetime while the machine is STATE_EXITING, so both hit the discard path in ISmaccStateMachine::postEvent.
  • StRest waits 1 s on a CbTimerCountdownLoop. It is deliberately a different timer behavior than StA’s: StA’s own EvTimer<CbTimerCountdownOnce> is still queued behind the reactor’s EvCountdownEnd when StRest is entered and would otherwise fire StRest’s reaction immediately.
  • StTrap is terminal and logs FATAL "TRAP ENTERED". Both StA and StRest transition to it on any sleep event. The sleep can never finish within StA’s 1 s lifetime, so a sleep event processed anywhere is one that crossed a state exit instead of being discarded.

One cycle takes 2 s. Expected per cycle: one requestForceFinish, two CURRENT STATE SCOPED EVENT DISCARDED warnings, zero TRAP ENTERED.

Running

ros2 launch sm_coretest_forced_finish_1 sm_coretest_forced_finish_1.launch.py
# output is teed to /tmp/sm_coretest_forced_finish_1_latest.log

Quick check of a log:

L=/tmp/sm_coretest_forced_finish_1_latest.log
echo "cycles: $(grep -ac '\[StRest\] Entered' $L)  discards: $(grep -ac 'EVENT DISCARDED' $L)  trap: $(grep -ac 'TRAP ENTERED' $L)"

Under sanitizers

Build the core and this package into a separate build/install base with -fsanitize=thread,undefined or -fsanitize=address,undefined -fsanitize-recover=address, then run the node binary directly (not through ros2 run with a stdbuf prefix, which preloads a library ahead of the sanitizer runtime). ThreadSanitizer needs setarch x86_64 -R on kernels with 32-bit mmap randomization. For LeakSanitizer to report, send SIGINT while the machine is in StRest, when no behavior thread is alive. The full procedure and the recorded results are in docs/smacc2_core_defect_fix_study.md at the repository root.

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_forced_finish_1 at Robotics Stack Exchange