Repository navigation
fix(debugger): bound output and make context and cleanup reliable - #131
xiaozhu1337 wants to merge 17 commits into
Conversation
|
Thank you for the amount of work in here, and for #130, which is a genuinely useful list. I have taken a good deal of it, but not as one branch. Here is the reasoning and exactly what landed. Why not as one mergeSquash-merging makes this and #126 to #129 mutually exclusive: taking both leaves 7 conflicted files and 17 conflict blocks, so it is a fork rather than an ordering question. Beyond the four PRs it adds roughly +2450/-1440 across 17 files, which is more than I can review to the standard the rest of this backlog got. And a few things in it would have regressed users: A close followed by a command now waits out the full timeout.
Every dump timeout closes the session. Dumps are not
For what it is worth, the branch does pass the live suite here (236 tests), and What landed from your work
The quoted log path deserves a specific mention, because it is worse than #130 states. Unquoted, cdb opens a log at the truncated prefix and leaves that file behind, so the #102 channel is silently off for anyone whose temp path has a space in it. Good catch. Not landing in 1.5: the remote readiness work, deferred to 1.6 with #127, because that path has no automated coverage at all and needs a live running target to test. That absence is why both branches shipped a defect there, and adding the scenario is part of the 1.6 work. I have also turned on CI for contributor pull requests at the repository level, so future ones get the full matrix without me approving a run. That would have caught the #128 regression on its own, since Closing this in favour of those three, with #130 left open for the items not yet taken. |
Summary
Closes #130. Fixes #125.
This is a consolidated safety PR: it contains the still-unmerged prerequisite fixes from #126, #127, #128 and #129, plus the newly reproduced fixes below. It is intended as one review/merge alternative to those four PRs, not an independent patch to merge alongside them. They remain open for history; this PR supersedes their combined implementation and corrects the native strict-marker regression in #128.
.echoto tolerate the native DBCS pipe behavior.offset/limit(filesystem-order pages, no stable-snapshot guarantee).The changes preserve the distinction between closing a user-mode remote client and resuming its independently owned server target. Kernel resume policy remains explicit. Remote clients do not open a server-owned Unicode log.
Tests
On Windows, final PR head
6d1e275130f3ccf04ada46ec0e480eccd26ac532(runtime fixes in338a440ab563e30688d2ec5d1fc667ba3ef610d0, followed by test-artifact isolation):pytest src/mcp_windbg/tests -m "not remote and not kernel" -q, supervised at 150 seconds with empty symbol-server paths and only bundled local dumps.git diff --checkpasses; changed text is UTF-8 without BOM.The native check has a 45-second supervisor and kills only its own test process tree. Real running remote targets and kernel targets were not tested, and no production crash reproduction or symbol download was attempted. These wrapper fixes do not prove sole causation of the earlier Windows crashes or guarantee recovery from OS-denied termination/native debugger/kernel faults. Remote DBCS output can still be truncated by native pipe behavior because a remote client does not own the server's log.