Repository navigation
OpenVMX V0.7-12
OVMX V0.7-12 Release Notes
Generated by tools/gen_release_notes.py from the merged history since V0.7-11 (29 commits). Do not hand-edit this file -- re-run the tool against the release tag instead.
Highlights
- A real VAX no longer bugchecks LOCKMGRERR or CNXMGRERR when OVMX joins its cluster. Three changes close the crashes seen in the demo gate. A master now tells a directory to drop an entry only if that directory holds one; OVMX had been sending a removal to a directory that never registered the entry, which is the cat-0x02 op-0x19 seen in every crash capture (vms-c55, #1776). The executive also holds cross-node lock requests while a cluster state transition is running (#1734). A connection-manager send that the port did not take now hands its send number back, closing the gap that bugchecked a VAX with CNXMGRERR (vms-fb0, #1775). The crashes were intermittent, so a clean gate is evidence, not proof.
- The 3-node cluster demo reaches a DCL prompt on both OVMX nodes in most visitor orders; it does not pass every time yet. On the tagged commit the visitor gate passed 6 of 8 orders with 0 VAX bugchecks (openvmx-site run 39111772800); both failures are the Node B memory exhaustion below (vms-4029). An earlier build of this release passed 8 of 8 (run 39101853519). V0.7-11 failed this gate.
- OVMX Node B reaches
Username:and a DCL prompt as a cluster member when it has memory to (vms-97c2). DCL staged each@command procedure in tmpfs and a low-memory write failed, so Node B stopped silently in STARTUP.COM. DCL now holds the procedure in memory (#1768), and other runtime paths no longer assume a tmpfs size (#1770). $CANCELcancels real queued I/O. It used to return success and do nothing. It now cancels the channel's pending requests, completes the IOSB with SS$_CANCEL, sets the event flag and runs the AST, and a read whose data has already arrived keeps its result (vms-c8c #1766, race fixed in #1772).$DGBLSCreturns SS$_NOSUCHSEC for a section that is not registered (#1767).times()writes the kernel'sstruct tmsinto its own buffer (#1774).- Faster CI. The bootable image, the kernel base and the layer caches are built once and shared across jobs; the host negative-control sweep runs in parallel. This changes how a release is proven, not what it does.
Known open items
- The demo's Node B (a 16 MB VAX) runs out of memory during startup in roughly 1 in 4 of the slow visitor orders. It logs "No space left on device", then
%OVMX-F-EXECINIT, the startup process did not complete, and never offers Username: (vms-4029; runs 39101862126, 39111772800). Free memory falls from 5.8 MB to about 20 KB during boot on every run; the fix is to reduce OVMX's memory footprint. The same exhaustion explains the login prompt that does not return after a timeout (below). - The login prompt on a cluster node sometimes does not restart after its 20 s timeout.
Timeout period expiredis the VMS login-read timeout; in the gate's slowest throttled order, OVMXB sometimes did not print a fresh prompt after it (vms-25f). - The 0b/05 database request names transfer connection 0, where real requests name one (19 of 19 in the capture corpus) (vms-9045).
- Clusterwide logical names are not sent from OVMX yet. A local change to a clusterwide table is refused with SS$_UNSUPPORTED while other members exist (vms-94a follow-up).
- Lock-tree remastering on the wire is not done yet (vms-380), and a former master does not yet answer "not master here" (vms-657).
Features
- cut: V0.7-12 -- the 3-node cluster demo passes its visitor gate; real-VAX LOCKMGRERR/CNXMGRERR fixes, Node B startup, $CANCEL (vms-c55, vms-fb0, vms-97c2, vms-c8c) (#1781)
- vms-558e: CONVERT/FDL is a plain %DCL-W-IVQUAL, not an invented CONVERT message (#1780)
- vms-558e: CONVERT stops claiming a conversion it did not perform (/FDL refused, plain copy silent) + guest test + host test + negctl (#1777)
- vms-c55: a master tells a directory to drop an entry only if that directory holds one (#1776)
- vms-d91: sys$dgblsc returns SS$_NOSUCHSEC for an unregistered section (#1767)
- vms-5303e: times() writes the kernel's struct tms into its own buffer (32-bit clock_t overran the caller) (#1774)
- visitor gate: record every keystroke per node with delivery and console growth (vms-25f) (#1773)
- vms-fb0: a CM send the port did not take hands its send-msg# back (real VAX CNXMGRERR) (#1775)
- vms-532: $CANCEL lets an already-ready io_uring request post its completion before cancelling (fixes cancel-vs-completion race); test repeats the already-arrived case 100x (#1772)
- tmpfs-sized assumptions off the runtime paths: sysinput, pager, spawn, OPCOM spool (vms-f47) (#1770)
- visitor gate: follow a console wake up fast enough to log in (vms-124) (#1769)
- DCL: stage @-procedures in memory, not tmpfs (vms-97c2: clustered Node B never offered Username:) (#1768)
- vms-c8c: sys$cancel cancels real io_uring-queued I/O (#1766)
- ci: Alpha gates share one build of the Linux/Alpha kernel + vms.ko + userland (#1764)
- ci: aarch64 jobs use prebuilt arm64 kernel bases (cross + native) from GHCR (#1762)
- tests: parallelize host negctl (persistent per-worker tree, incremental rebuild, xargs-style workers) (#1763)
- ci: kernel-base carries no signing key; the real key is injected at use time (#1761)
- ci: ci-alpha layer caches (cross-alpha, cross-alpha-vms) move from type=gha to GHCR registry (#1759)
- ci: remaining buildx layer caches move from type=gha to GHCR registry (vax, selfhost, core-gates, boot image) (#1758)
- ci: kernel-executive layer caches move from type=gha to a GHCR registry cache (#1756)
- ci: Alpha stage-2 C/C++ toolchain cached in GHCR, not actions/cache (#1757)
- ci: build the bootable image once per SHA (GHCR); 13 e2e jobs pull it (#1755)
- ci: prebuilt kernel-base image in GHCR; src/kernel change rebuilds only vms.ko (#1753)
- ci: red-main bot (re-run once, bisect, auto-revert through the queue) + AGENTS.md dispatch guidance (#1750)
- ci: safe_merge.sh is emergency-only; per-skipped-check dispatch requirement now opt-in (--require-heavy) (#1751)
- vms-c55: the executive holds cross-node lock traffic for the duration of a cluster state transition (#1734)
- roadmap: reconcile after V0.7-11; notes regenerated from the tag with the #1730 correction; compat surface regenerated (#1742)
- cut-release.sh peels an annotated tag to its commit; release.yml can be rehearsed on a throwaway annotated tag before the real one (#1741)
- vms-4f4: a BUGCHECK verdict beside a stale OVMX node says it is not the build under test (#1735)