Skip to content

fix(win32): ensure proper termination of child processes #658

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

jingx8885
Copy link

  • Refactor process termination logic to handle both parent and child processes
  • Increase timeout for graceful termination from 1s to 2s
  • Consolidate process termination functions to avoid zombie processes
  • Add proper type hints for process list handling

This change ensures that all child processes are properly terminated when killing a parent process on Windows, preventing zombie processes from being left behind.

This change ensures that all child processes are properly terminated when killing a parent process on Windows, preventing zombie processes from being left behind.

Motivation and Context

On Windows, when terminating a parent process, child processes can become orphaned and turn into zombie processes if not properly handled. This change implements a more robust process termination mechanism that ensures both parent and child processes are properly cleaned up.

How Has This Been Tested?

Tested process termination with various scenarios:
Single process termination
Parent process with multiple child processes
Processes with nested child processes
Verified that no zombie processes remain after termination
Tested both graceful termination and force kill scenarios

Breaking Changes

No breaking changes. This is a bug fix that improves existing functionality without changing the API or behavior from the user's perspective.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

jingx8885 added 5 commits May 8, 2025 12:05
- Refactor process termination logic to handle both parent and child processes
- Increase timeout for graceful termination from 1s to 2s
- Consolidate process termination functions to avoid zombie processes
- Add proper type hints for process list handling

This change ensures that all child processes are properly terminated
when killing a parent process on Windows, preventing zombie processes
from being left behind.
@jingx8885
Copy link
Author

@simonw @sheffler require code review

@sheffler
Copy link
Contributor

This seems straightforward to me, but I do not consider myself qualified to review a win32 PR.

@jingx8885
Copy link
Author

@dsp-ant @cristipufu @jspahrsummers @samuelcolvin require code review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants