Skip to content

vms-629: OVMX's lock directory answers a real VAX's op-0x08 barrier lookup (the VAX barrier no longer wedges at step 7) - #1422

Merged
baron-3dl merged 1 commit into
mainfrom
work/vms-629-op08
Oct 8, 2026
Merged

baron-3dl merged 1 commit into
mainfrom
work/vms-629-op08

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

The bug. A real V7.3 VAX forming a cluster with OVMX as a founding member (the vms-f29 path) does this:

  • At barrier step ~7 it sends its directory node cat-0x02 op 0x08 for SYS$SYS_ID+⟨its own SCSSYSTEMID⟩.
  • It holds the next release until that lookup is answered.

OVMX refused op 0x08 under RULE C. As a result:

  • The VAX barrier stopped at step 7 forever.
  • OVMXA stayed in transition_active.
  • The VAX never proposed the next joiner. Nobody else was admitted, with 0 bugchecks (rd vms-629).

Oracle. Two independent real-VAX samples:

  • coldform-ev2-formation.pcap records 121/123.
  • A new dlmlab two-VAX cold formation, tests/lab/captures/vms-629-op08-20261005/cf1-op08.pcap.

In both, the other VAX answers 82/01 within 1.5 ms: the request is echoed, the opcode byte reads 0x01, and body[34] = 0xf9 ("you master it"). The barrier then proceeds.

Change.

  • New constant VMS_DLM_WIREOP_DIR_LOOKUP_TR (0x08). The directory role (vms-8219) reads it as a root lookup and answers it with the same grounded builder as an op-0x01 lookup.
  • That builder now writes opcode 0x01 in every answer.
  • A redirect answer to an op 0x08 has never been observed, so that case is held back, counted, and logged once.

Tests.

  • R1: test_dlm_dir answers both real requests byte-identically to the real VAX answers, opcode included (the stale span is handled as in vms-8219). test_dlm_scs_arm source-scans the routing.
  • Full host ctest: green, apart from the known load-flaky terminal_identity_gate (rd vms-946).
  • Lab (dlmlab rig1, runO): OVMXA founds, a real VAXC forms with it, then OVMXB joins.
build formation barrier OVMXB admitted real-VAX bugchecks
main (O-base1) stuck at step 7, op 0x08 unanswered 0/1 0
this branch (O-629-1, -2) completes, op 0x08 answered 82/01 2/2, CN=3 0

More arms are running; I will post the results on this PR.

🤖 Generated with Claude Code

…ookup -- unanswered, the VAX's barrier never released

A real VAX forming a cluster with OVMX as a founding member sends its
directory node cat-0x02 op 0x08 for SYS$SYS_ID+<its own SCSSYSTEMID> at
barrier step ~7 and holds the next release until it is answered. OVMX
refused it under RULE C, so the VAX's barrier stopped at step 7 and the
cluster admitted nobody (dlmlab runO, OVMXA+VAXC+OVMXB, 0 bugchecks).

Oracle, two independent real samples: coldform-ev2-formation.pcap records
121/123 and a fresh dlmlab two-VAX cold formation (cf1-op08.pcap): the other
VAX answers 82/01 -- the request echoed, opcode byte 0x01, body[34] = 0xf9 --
within 1.5 ms, and the barrier proceeds.

VMS_DLM_WIREOP_DIR_LOOKUP_TR (0x08): a ROOT lookup the directory role reads
like an op-0x01 one (vms_dlm_res_ident_parse_body) and answers with the same
builder, which now writes opcode 0x01 in every answer. A redirect answer to an
op 0x08 has never been observed, so that case is held back, counted and said
once. R1: test_dlm_dir answers both real requests byte-identically to the real
VAX answers (opcode included); test_dlm_scs_arm source-scans the routing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@baron-3dl

Copy link
Copy Markdown
Contributor Author

Stall matrices on the combined build (main + vms-629 + vms-ba4 final, SOURCE 96e71f6), dlmlab, real V7.3 VAXC: 20 arms, 0 VAX bugchecks. The runs were R-1..R-14, N3-1..N3-3 and P-1..P-3; the k3s-worker rebooted under load twice, which ended two runs early.

The class this fixes is the b-then-a 13/14 s arms:

  • Before the fix (builds l629/mcomb, same pod): 5 of 13 bugchecked CNXMGRERR (L-3, L-9, N1-3, N2-2, N2-4). All five show the same dialogue-counter shape, documented on rd vms-ba4.
  • With the final fix: 0 of 6.

The remaining FAILs fall into the tracked classes: vms-ec2, vms-04b, and stall longer than RECNXINTERVAL.

@baron-3dl
baron-3dl merged commit dcfdbaa into main Oct 8, 2026
144 checks passed
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