Repository navigation
session tree M1: Python child debugging by default and cross-platform lifecycle fixes (#1081, #1089) - #1091
Merged
Conversation
… are child sessions unless a launch opts out (#1081) The launch transform sends subProcess: true unless dapLaunchArgs names it (the false default of #1008 existed only for the park hang the session tree removed); an explicit false is forwarded with a note that the children run undebugged. The attach transform sends the same for the record: measured against python -m debugpy --listen, the target decides at listen time (on unless --configure-subProcess false), and its children report on this connection whatever the request says, so an explicit false gets a note saying so. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…at exits early, siblings and a multiprocessing child; the default-on and opt-out proofs (#1081) The inherit regression (#993) now proves the default: its child is a child session that ran to its end, and an explicit subProcess: false runs it undebugged with the note. The tree suite drops its explicit key and its release-run case (the inherit default case). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ng under a paused parent, a parent exiting early, a grandchild chain closed under its child, siblings, multiprocessing (#1081) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…orts on the attach connection whatever the request says; detach keeps the rows, close removes them, the target runs on (#1081) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… yields two, the worker stops on the breakpoint, the run completes; xdist joins the hashed pytest lock and the Windows lane runs the new suites (#1081) requirements/pytest.txt recompiled with pip-compile from pytest.in (+ pytest-xdist==3.8.0, execnet==2.1.2; every existing hash unchanged). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…atus, the measured by-port attach, the KNOWN_ISSUES entry dropped, the changed entry (#1081) The wait_for_stop description's parenthetical says "(Python, on by default)" (24 tool-list snapshots); the two unreleased #1081 added fragments stop saying the default is off; the pytest preset's comment says why -p no:xdist stays. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…843 guard) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: JF <john.franklin@gmail.com>
Signed-off-by: JF <john.franklin@gmail.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
debugmcpdev
commented
Nov 5, 2026
debugmcpdev
left a comment
Collaborator
Author
There was a problem hiding this comment.
Reviewed the runtime defaults, attach diagnostics, child-session lifecycle, fixtures, and platform behavior. Fixed the attach synchronization/cleanup defects and the POSIX multiprocessing assertion in 6d564ec. Full validation also reproduced #1089; 3d0a17f fixes the Windows Dart/.NET tree-termination race and adds six regression cases.
No outstanding review findings on this revision. The full local gate passed (8,091 unit tests, 138 integration tests), and GitHub CI, CodeQL, and patch coverage are green for this exact head.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Python launches now debug child processes by default. Children become sessions with
parentSessionId, inherit breakpoints, and report stops through the parent'swait_for_stop.Behavior
subProcess: trueunlessdapLaunchArgs.subProcessexplicitly overrides it. An explicitfalsekeeps children undebugged and produces a diagnostic; explicittrueis silent.DEBUG_MCP_MAX_CHILD_SESSIONS(default 32; 0 releases all reported children).subProcess, but an explicitfalsenow explains that disabling child debugging requires the target's--configure-subProcess falseordebugpy.configure(subProcess=False).Lifecycle coverage and fixes
Scope
Closes #1081 and #1089. Ancestor/descendant idle protection remains in #1025 step 2; session-tree M2 is #1082. The pytest preset retains its in-process default; xdist coverage uses a module launch.
Validation
git diff --checkpassed.3d0a17fc917c9c57a32de285f0e0a3c765117b64: full Linux/Windows suites with coverage, Windows Python focus, MCP conformance, container tests, and all language host lanes. CodeQL and patch coverage also passed.