Skip to content

[PROOF-ONLY, do not merge] vms-f59 + vms-3320 combined — crtl_rms3 crash-gone gate - #1105

Closed
baron-3dl wants to merge 4 commits into
mainfrom
work/vms-f59-3320-railproof
Closed

baron-3dl wants to merge 4 commits into
mainfrom
work/vms-f59-3320-railproof

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Draft, proof-only — DO NOT MERGE; closing after CI.

Runs CI's alpha CRTL→RMS file-op boot gate (crtl_rms3) on the combined tree of the vms-f59 LINK.EXE fix (#1104) + the vms-3320 veneer (#1085), to prove the vms-f59 fix eliminates the __malloc_donate small-alloc SIGSEGV that vms-c5d flagged.

Success = the alpha file-op veneer gate is green: no signal 11 on the first creat, crtl_rms3 returns sentinel 7, and the independent ODS-2 DIRECTORY reader sees FOPCRE.DAT + FOPDST.DAT with real File IDs. This is the "prove the combined tree before landing vms-f59" gate.

The real reap vehicles are #1104 (vms-f59) then #1085 (vms-3320, rebased on vms-f59). This PR is only to exercise the combined-tree gate that neither single-PR branch runs on its own.

🤖 Generated with Claude Code

https://claude.ai/code/session_013mZSxmiHPcUBuMNiVT5jXw

baron-3dl and others added 4 commits September 10, 2026 14:24
…tire the section-base heuristic + the vms-b14 exception)

The EVAX section-relative strong-over-weak override (vms-430) keyed on the
target section's BASE (offset 0) being an overridden weak, then added the
reloc addend. Two failure modes, both from keying on the section base rather
than the reloc's actual named target (base+addend = the referenced symbol's
own placed address):

  (a) OVER-DRAG: when the offset-0 symbol was an overridden weak
      (__malloc_allzerop in musl-alpha calloc.o/__libc_calloc.o), the base
      redirect dragged every DISTINCT strong sibling sharing that $LINK$
      section (decc$_calloc64 / __libc_calloc at +0x18) to strong+addend,
      landing inside the wrong routine and a_crash()ing — patched by a
      hardcoded __malloc_allzerop name exception (vms-b14).
  (b) SILENT MISS: __libc_malloc_impl is WEAK at $LINK$ +0x30 in lite_malloc.o
      (NOT offset 0) and STRONG in mallocng — the base-key redirect never
      fired for it, leaving malloc split between mallocng and lite_malloc's
      dead bump allocator: the two-allocator heap split that crashes the
      small-alloc __malloc_donate path on the CRTL->RMS file-op veneer image
      (vms-c5d, which blocks vms-3320 and the faithful endgame vms-fd1).

Root fix: redirect the EXACT named target (base+addend) via evax_wredir_apply,
shifting S by the weak->strong delta so the store's S+addend lands on the
strong def. An overridden weak at ANY section offset forwards to its strong
def; a distinct strong sibling's address is not a weak->strong key and is left
untouched. No section-base coincidence, no per-name exception, no .o alias
metadata — retires both the heuristic and the bounded vms-b14 exception.
Symbol-table evidence (musl-1.2.5-alpha objdump -t): the only overridden weaks
are __malloc_allzerop (off 0) and __libc_malloc_impl (off +0x30); every calloc/
malloc sibling that must be LEFT is a distinct strong (or sole-def weak) at a
nonzero offset, so exact-target keying separates them cleanly.

Host EVAX ctests green (run_evax_link/shareable/ximport/gvalfold/vmsrel/read).
Alpha proof (run_muldef_evax + crtl_rms3 boot, crash gone) on the rail.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013mZSxmiHPcUBuMNiVT5jXw
…e rail crtl_rms3 boot proof (do not reap; delete after)
@baron-3dl

Copy link
Copy Markdown
Contributor Author

Closing — this proof-only PR did its job: it PROVED the vms-f59 linker redirect does NOT eliminate the crtl_rms3 crash (and regresses N=7). Superseded by re-scoping crtl_rms3 as a mallocng-on-alpha small-alloc bug. Do not merge.

@baron-3dl baron-3dl closed this Sep 10, 2026
@baron-3dl
baron-3dl deleted the work/vms-f59-3320-railproof branch September 10, 2026 16:57
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