Update `subint_forkserver` skip reason: capture-pipe

Refresh the `test_nested_multierrors` skip-mark
reason to the final diagnosis: the hang is pytest's
default `--capture=fd` pipe filling from high-volume
subactor traceback output inherited via fds 1,2 in
fork children — `pytest -s` passes cleanly. Records
the fix direction (redirect child stdio to
`/dev/null` in the fork-child prelude) for whoever
lands the backend.

(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code

(cherry picked from commit eceed29d4a)
(factored: kept only the tests/test_cancellation.py skip-reason update of
 "Pin forkserver hang to pytest `--capture=fd`"; dropped the subint
 conc-anal doc + tests/spawn/test_subint_forkserver.py)
wkt/tooling_enhancements_from_mtf_spawner
Gud Boi 2026-06-09 20:21:58 -04:00
parent 41813ac9a0
commit 828df7df79
1 changed files with 9 additions and 7 deletions

View File

@ -455,14 +455,16 @@ async def spawn_and_error(
@pytest.mark.skipon_spawn_backend(
'subint_forkserver',
reason=(
'Multi-level fork-spawn cancel cascade hang — '
'peer-channel `process_messages` loops do not '
'exit on `service_tn.cancel_scope.cancel()`. '
'See `ai/conc-anal/'
'Passes cleanly with `pytest -s` (no stdout capture) '
'but hangs under default `--capture=fd` due to '
'pytest-capture-pipe buffer fill from high-volume '
'subactor error-log traceback output inherited via fds '
'1,2 in fork children. Fix direction: redirect subactor '
'stdout/stderr to `/dev/null` in `_child_target` / '
'`_actor_child_main` so forkserver children don\'t hold '
'pytest\'s capture pipe open. See `ai/conc-anal/'
'subint_forkserver_test_cancellation_leak_issue.md` '
'for the full diagnosis + candidate fix directions. '
'Drop this mark once the peer-chan-loop exit issue '
'is closed.'
'"Update — pytest capture pipe is the final gate".'
),
)
@pytest.mark.timeout(