Problem
The exact Zig 0.17.0-dev.1818+7051f8e73 Linux unit shard deterministically panics in vm: quickens isolated polymorphic own-data property loops with exact steps with switch on corrupt value at quickGlobalBindingValue while reading a QuickGlobalBinding union.
Evidence: CI run 32338430544, unit shard 3. The stack reaches the cache through a getter invoked during the polymorphic property loop.
recordQuickGlobalBinding currently stores a newly allocated, uninitialized union pointer in chunk.quick_global_bindings[instruction] before resolving and initializing the cache payload. This violates the table comment’s fully-decoded-before-publication contract and leaves a reentrant read able to observe an invalid tag.
Required implementation
- Build a new global-binding cache completely before publishing its pointer.
- Preserve exact environment, global object, shape, slot, alias, accessor, and shared-mode guards.
- Do not disable quickening, skip the test, weaken safety checks, or paper over an invalid tag.
- Audit other type-erased quick-cache publication sites for the same ordering defect and file/link follow-ups where needed.
Acceptance
- The focused polymorphic loop test passes repeatedly under exact dev.1818 on Linux.
- Focused VM quickening tests pass in isolated and shared/seqlock modes.
- Full unit and TSan gates pass without corrupt-tag panics.
- Quantify quickening hit/step invariants before and after.