Skip to content

Update the README for the sanitizer work - #85

Merged
sidick merged 1 commit into
mainfrom
readme-update
Sep 16, 2026
Merged

sidick merged 1 commit into
mainfrom
readme-update

Conversation

@sidick

@sidick sidick commented Sep 16, 2026

Copy link
Copy Markdown
Owner

The README's sanitizer section had gone stale — and two of the three ways were wrong, not merely incomplete.

What was wrong

What it says now

The lead example is a real m68k-amigaos-gcc stack smash, with its found 0x41414141 and (at ___main+0x3c) symbol attribution — both the most recognisable bug shape and the case this whole effort started from, since gcc has no -fsanitize=address.

It also records the two things the sanitizer genuinely cannot see: intra-frame stack overflows (compiler instrumentation territory, invisible to valgrind too), and malloc inside a C runtime's own pool, which sub-allocates via exec.library/Allocate rather than the allocators volamos guards (#83). Overselling a bug detector is how people stop trusting it.

Status section

It said the three-oracle parity harness "hasn't formally started yet". tools/compare_three_way.py exists and works — same binary under volamos, vamos and a real Kickstart via Copperline. Now documented, including that it's local-only (real ROM and Workbench media, neither committable) and needs a --model matching its --rom, with a pointer to the hardware-verified Differences from vamos page. Added pLhA and SAS/C 6.58 to the real-binary list they were missing from.

Verification

Every command and output block was run and copied verbatim, and the two load-bearing claims re-checked: PhxAss reports exactly one violation, and sc's output object file is still byte-identical with and without --sanitize.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AKBJRT9j5APTyKyZtj8f23

The "Finding bugs in guest programs" section had gone stale in three
ways, two of them wrong rather than merely incomplete:

- It quoted the old report format ("1 distinct violation(s)"), which
  became per-PC grouping in #79.
- It claimed real PhxAss "runs clean" under --sanitize. It no longer
  does: #84 poisoned the allocators PhxAss actually uses, and it turns
  out to read two bytes past its own 40-byte timerequest. That is a
  genuine find rather than a regression, so the README now says so
  instead of claiming silence.
- It predated --sanitize-uninit (#79), --dirty-heap (#81) and source
  locations (#74), so it undersold the feature by three increments.

The lead example is now a real m68k-amigaos-gcc stack smash with its
0x41414141 and symbol attribution, since that is both the most
recognisable bug shape and the case the whole effort started from (gcc
having no -fsanitize=address).

Also records the two things it genuinely cannot see -- intra-frame stack
overflows, and malloc inside a C runtime's own pool, which
sub-allocates via exec.library/Allocate rather than the allocators
volamos guards (#83) -- because overselling a bug detector is how people
stop trusting it.

The Status section said the three-oracle parity harness "hasn't formally
started yet". tools/compare_three_way.py exists and works: it runs the
same binary under volamos, vamos and a real Kickstart via Copperline.
Updated, including that it is local-only (real ROM and Workbench media,
neither committable) and needs a --model matching its --rom, and
pointing at the hardware-verified vamos differences page. Also added
pLhA and SAS/C 6.58 to the real-binary list they were missing from.

Every command and output block here was run and copied verbatim, and
the two load-bearing claims were re-verified: PhxAss reports exactly one
violation, and sc's output object file is still byte-identical with and
without --sanitize.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKBJRT9j5APTyKyZtj8f23
@sidick
sidick merged commit e9b4919 into main Sep 16, 2026
9 checks passed
@sidick
sidick deleted the readme-update branch September 16, 2026 18:58
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