Skip to content

fix: make sure daemons are brought down cleanly#84

Merged
georgeh0 merged 5 commits intomainfrom
g/ws2
Mar 16, 2026
Merged

fix: make sure daemons are brought down cleanly#84
georgeh0 merged 5 commits intomainfrom
g/ws2

Conversation

@georgeh0
Copy link
Member

No description provided.

georgeh0 and others added 2 commits March 16, 2026 13:19
prek --verbose captures subprocess stdout via pipe. On Windows, the 4KB
pipe buffer fills when pytest produces verbose output, causing a deadlock
(pytest blocks writing, prek blocks waiting for exit). Split into two
steps: prek --skip pytest for lint checks, and pytest running directly
for streaming output.

Also:
- Add OSError catch in _pid_alive for Windows edge cases
- Properly shut down daemon thread in test_daemon.py session fixture

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On Windows, os.kill(pid, 0) raises SystemError when the target process
has exited but its handle state is in transition (WinError 87). This
corrupts CPython C exception state, causing subsequent built-in calls
like time.monotonic() to also raise SystemError.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tion

os.kill(pid, 0) on Windows corrupts CPython C-level exception state
even after the raised OSError is caught. This causes subsequent calls to
C built-ins (time.monotonic, time.sleep) to raise SystemError. Use
ctypes OpenProcess instead, which is the proper Win32 API for checking
process existence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@georgeh0 georgeh0 merged commit 53d8082 into main Mar 16, 2026
5 checks passed
@georgeh0 georgeh0 deleted the g/ws2 branch March 16, 2026 22:07
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.

1 participant