The sil-kit-system-controller currently crashes (SEGFAULT) if the simulation is stopped externally. This happens because the handler is called when the SignalMonitor instance is destroyed, and the handler calls the logging functions on a destroyed object.
The fix checks that the signal number is not the 'default' / 'invalid' signal number before calling the handler.
Instructions for review / testing
Please run the system controller and a participant that can be stopped 'by hand' without exiting the process. Then, when the participant stops, the system controller should exit normally. Check the exit code (PowerShell: $LASTEXITCODE, shell: $?).
Developer checklist (address before review)
[ ] Changelog.md updated
[ ] Prepared update for depending repositories
[ ] Documentation updated (public API changes only)
[ ] API docstrings updated (public API changes only)
Subject
The
sil-kit-system-controller
currently crashes (SEGFAULT) if the simulation is stopped externally. This happens because the handler is called when theSignalMonitor
instance is destroyed, and the handler calls the logging functions on a destroyed object.The fix checks that the signal number is not the 'default' / 'invalid' signal number before calling the handler.
Instructions for review / testing
Please run the system controller and a participant that can be stopped 'by hand' without exiting the process. Then, when the participant stops, the system controller should exit normally. Check the exit code (PowerShell:
$LASTEXITCODE
, shell:$?
).Developer checklist (address before review)