Skip to content

Self-host: spine bundle native emit fails — JIT 'Cannot assign to a value' (lib/JIT.php:12225); gen-0 sidecar refresh blocked #16828

Description

@PurHur

Summary

On current master (d11a1be + spine sync to 4146), the full compiler_lib_spine_smoke bundle no longer compiles through the AOT emit path: bin/compile.php -o … main.php dies with Cannot assign to a value (thrown at lib/JIT.php:12225, the ASSIGN lowering guard). Consequently make bootstrap-gen0-refresh-sidecar cannot produce an honest native emit, and the committed gen-0 sidecar stamp cannot be refreshed — it is already stale on master (stamp e7d7c34b from the 4114-era #16732, spine now 4146).

Isolation so far (pinned container)

  • Every recently ADDED lib/ext file (last ~40 commits, 30 files incl. the DOM NamedNodeMap batch, curl_file, ClassUsesRecursive, DatePeriod ISO8601) compiles CLEAN as a mini bundle → the breaker is in a MODIFIED file or a whole-bundle interaction.
  • bin/lint.php passes on all suspects individually (lint's LintCompiler pass does not reach this JIT lowering).
  • A 4-file mini bundle (3 new ext/dom files + lib/AOT/HelperRuntimeCache.php) compiles but the resulting binary segfaults after c:main_before_php — possibly related, possibly Compiler SIGSEGV: ++/-- lowering crashes on null locals and under the FunctionStatic phpunit filter #16565-class.
  • The stale prelinked sidecar fallback binary also crashes (free(): invalid pointer), so the NO_ZEND arm is broken too.

Repro

php bin/compile.php -o /tmp/spine test/selfhost/compiler_lib_spine_smoke/main.php
# → Cannot assign to a value

Impact

  • check-selfhost-spine-sidecar-sync is red on master and cannot be healed by refresh until this is fixed.
  • Spine-growth PRs can still sync counts/coverage/footnotes but must ship without an honest stamp refresh.

Done when

  • Full spine bundle compiles via bin/compile.php (breaker identified — binary-search the 4146 requires from lib/JIT.php:12225 with a debug dump of the offending Op/file)
  • make bootstrap-gen0-refresh-sidecar green, stamp matches bundle SHA
  • check-selfhost-spine-sidecar-sync green on master

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingm2-spine-unitSingle M2 spine inventory unit (#1056)phase-3:aotPhase 3 – AOT deployment

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions