Commit graph

2 commits

Author SHA1 Message Date
Teknium
c74030a11d
refactor(process): extend preexec_fn→start_new_session swap to remaining Popen sites
PR #8399 replaced preexec_fn=os.setsid with start_new_session=<bool> in
tools/environments/local.py to use CPython's thread-safe POSIX fastpath
instead of a between-fork-and-exec callback. Apply the same swap to the
other three files covered by tests/tools/test_windows_compat.py so all
Popen call sites use a consistent idiom.

Also:
- Strip a trailing-whitespace line introduced by the original PR.
- Update CONTRIBUTING.md + website/docs/developer-guide/contributing.md
  to recommend start_new_session in the cross-platform process management
  section.
- Fix a stale docstring reference in tools/environments/base.py (_popen_bash).
- Extend test_windows_compat.py with a parallel regression guard that
  rejects bare start_new_session=True (must be gated on _IS_WINDOWS).

Scope note: this is code hygiene, not a fix for #8340 — the two forms
invoke the same setsid() syscall, so this swap alone does not change
behavior for the 'setsid ... & disown' hang scenario in that issue.
#8340 remains open.
2026-04-19 05:46:14 -07:00
Farukest
3f58e47c63
fix: guard POSIX-only process functions for Windows compatibility
os.setsid, os.killpg, and os.getpgid do not exist on Windows and raise
AttributeError on import or first call. This breaks the terminal tool,
code execution sandbox, process registry, and WhatsApp bridge on Windows.

Added _IS_WINDOWS platform guard in all four affected files, following
the pattern documented in CONTRIBUTING.md. On Windows, preexec_fn is
set to None and process termination falls back to proc.terminate() /
proc.kill() instead of process group signals.

Files changed:
- tools/environments/local.py (3 call sites)
- tools/process_registry.py (2 call sites)
- tools/code_execution_tool.py (3 call sites)
- gateway/platforms/whatsapp.py (3 call sites)
2026-03-01 01:54:27 +03:00