Skip to content

Unreadable is the absence of an answer, not a claim - #184

Merged
glslang merged 1 commit into
mainfrom
unreadable-is-not-a-claim
Sep 24, 2026
Merged

glslang merged 1 commit into
mainfrom
unreadable-is-not-a-claim

Conversation

@glslang

@glslang glslang commented Sep 24, 2026

Copy link
Copy Markdown
Owner

Prose only, following review on glslang/windbg-mcp#382. No behaviour changes; 435 tests pass unchanged.

PoolState::Unreadable landed in #183 documented as "memory the walk could not read, and which the target has". That is true of the cases the memory manager confirms committed — paged out, missing from a dump, refused by the debugger — and false of every case where no commitment query could be made at all: a kernel walk, a dump recording no memory information, a query that failed. Those are exactly what PoolMemory::committed_run's None arm is for, and they land in Unreadable by design.

So the asymmetry the change rests on was described backwards in the one place everyone reads it from. Uncommitted carries a positive answer (MEM_RESERVE/MEM_FREE); Unreadable carries the absence of one. Reading it as confirmed memory turns we could not tell into a fact about the target, which is the single thing this walker exists not to do — and docs/unknown-not-absent.md is a document about exactly that mistake.

Corrected at both definition sites (PoolState::Unreadable, HeapState::Unreadable, HeapWalkReport::unreadable_gaps) and in docs/unknown-not-absent.md, which gains the paragraph stating the rule rather than leaving it implied by the table above it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MUhLUt9rB6zd42Y25btB3h

The doc comments this state landed with said it is "memory the walk could
not read, and which the target *has*". That is true of the cases the memory
manager confirms committed and false of every case where no commitment query
could be made at all — a kernel walk, a dump recording no memory
information, a query that failed — which is precisely the half
`committed_run`'s `None` arm exists for.

`Uncommitted` carries a positive answer; `Unreadable` carries the absence of
one. Saying otherwise turns *we could not tell* into a fact about the target,
which is the one thing this walker is built not to do. Corrected at both
definition sites and in `docs/unknown-not-absent.md`, whose new section is
where the distinction is stated.

Prose only; no behaviour changes and 435 tests pass unchanged.

Raised by review on glslang/windbg-mcp#382.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUhLUt9rB6zd42Y25btB3h
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 5b3296fc-c931-4516-9e29-19995e0aec79


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

glslang added a commit to glslang/windbg-mcp that referenced this pull request Sep 24, 2026
Review on this PR found the prose describing `unreadable` as "memory the
process has". That is true of the cases the memory manager confirms committed
and false of every case where no commitment query could be made at all — a
kernel walk, a dump recording no memory information, a query that failed —
which is precisely what the conservative default is for. `uncommitted`
carries a positive answer; `unreadable` carries the absence of one, and
saying otherwise turns "we could not tell" into a fact about the target.

Also re-derives the full-surface figure in `docs/tool-surface.md`'s opening
sentence, which said 94,921 B dated 2026-09-20 while the table two lines
below it said 94,957 — that sentence is prose, so the test that checks the
tables never looked at it, and it now says so.

Fixed at the dbgscope definition sites too, in glslang/dbgscope#184.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUhLUt9rB6zd42Y25btB3h
@glslang
glslang merged commit 28dd63d into main Sep 24, 2026
7 checks passed
@glslang
glslang deleted the unreadable-is-not-a-claim branch September 24, 2026 16:46
glslang added a commit to glslang/windbg-mcp that referenced this pull request Sep 24, 2026
Review on this PR found the prose describing `unreadable` as "memory the
process has". That is true of the cases the memory manager confirms committed
and false of every case where no commitment query could be made at all — a
kernel walk, a dump recording no memory information, a query that failed —
which is precisely what the conservative default is for. `uncommitted`
carries a positive answer; `unreadable` carries the absence of one, and
saying otherwise turns "we could not tell" into a fact about the target.

Also re-derives the full-surface figure in `docs/tool-surface.md`'s opening
sentence, which said 94,921 B dated 2026-09-20 while the table two lines
below it said 94,957 — that sentence is prose, so the test that checks the
tables never looked at it, and it now says so.

Fixed at the dbgscope definition sites too, in glslang/dbgscope#184.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUhLUt9rB6zd42Y25btB3h
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