Robotics

ROS dev's Windows SIGINT fix attempt fails, exposes ghost process issues

Windows CI errors traced to SIGINT mishandling—attempted CTRL_C_EVENT fix backfires.

Deep Dive

A ROS developer's deep dive into Windows CI failures has uncovered a fundamental dilemma: Windows doesn't natively support POSIX SIGINT signals, so process termination always escalates to SIGTERM—an ungraceful shutdown that leaves processes and memory in a bad state. KimMcG, who posted on the ROS General forum, traced persistent access violations (exit code 3221225477) on the newly switched Windows Server 2025 CI builder to this behavior, but found the fix is not straightforward.

Their attempt to implement proper CTRL_C_EVENT and CTRL_BREAK_EVENT handling via forks of osrf_pycommon and ros2_launch resulted in even more failures (CI run 28952). This echoes known issues like ghost processes hanging after termination and falsely positive test results on Windows. Community members like mjcarroll confirmed similar struggles in launch_ros, and suggested that emulating SIGTERM behavior on Linux could help identify cleanup gaps. Several open PRs—including using the psutil library for OS-agnostic shutdown—remain candidates for future fixes, but no clear solution has emerged yet.

Key Points
  • Windows can't handle SIGINT properly, forcing SIGTERM escalation that causes access violations (3221225477) in ROS CI
  • KimMcG's CTRL_C_EVENT patch on fork of osrf_pycommon and ros2_launch produced more CI failures, not fewer
  • Related open PRs propose psutil-based process cleanup and graceful CTRL+C handling, but still unmerged

Why It Matters

For ROS teams targeting Windows, broken process termination means flaky CI and zombie processes—this investigation highlights the path to a real fix.

📬 Get the top 10 AI stories daily