Skip to content

fix(monitor): release processes acquired during cancellation - #376

Merged
Alban1911 merged 1 commit into
Alban1911:mainfrom
Lng999:fix/monitor-cancellation-20261020
Oct 20, 2026
Merged

Alban1911 merged 1 commit into
Alban1911:mainfrom
Lng999:fix/monitor-cancellation-20261020

Conversation

@Lng999

@Lng999 Lng999 commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Cleanup, overlay startup, or skipped injection can cancel the monitor while process suspension is still in flight. Previously cancellation missed the unpublished process and the worker could exit leaving it suspended. Both discovery paths now publish under the cancellation lock or resume the locally owned process when cancellation wins. Slow process operations remain outside the lock. Cancellation takes ownership atomically, and completion of an older resume cannot erase a restarted monitor's state. A failed local release remains available for the existing cleanup retry; timeout callback failures also release acquired processes.

Validation: python -B -m unittest injection.tests.test_game_monitor_cancellation -v (7 passing, including 18 Event-controlled cancellation scenarios across both discovery paths and all three cancellation entry points); isolated injection discovery (62 passing); all 323 Python tests passed in the combined audit worktree; CI error-only Ruff 0.16.8 and git diff --check passed. Against unpatched HEAD, the during-suspension regression fails in all six path/cancellation combinations. New regressions mock process operations; no live-game validation was performed.

@Alban1911
Alban1911 merged commit b41fc14 into Alban1911:main Oct 20, 2026
3 of 4 checks passed
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