php / php/php-src

IR JIT: too long jmp distance in ir_add_veneer, ir_aarch64.dasc:6495.

オープン
#17,858 コメント 8 件 リアクション 0 件 担当者 1 名 GitHub で見る

@dstogov がすでに取り組んでいます。

2025年2月19日 から。

Bug Category: JIT Extension: opcache Status: Needs Triage
主要言語
C
スター
40.4k
フォーク
8.2k
平均マージ
2日 13時間
マージ済み PR(30日)
96

説明

Description

Running ./psalm --no-cache in https://github.com/vimeo/psalm/tree/preload_all_classes_tmp on aarch64 (mac OS 15.3.1, not reproducible on linux aarch64 on a KVM in the same machine) triggers the following assertion:

Assertion failed: (0 && "too long jmp distance"), function ir_add_veneer, file ir_aarch64.dasc, line 6495.

On 3b23de31db969c3c12060ff7c5ba363f65de6669, the following assertion is triggered instead:

Assertion failed: (_blocks[use] == b || use_insn->op == IR_PARAM), function ir_schedule, file ir_gcm.c, line 948.

The issue is triggered by the large number of class_exists statements in src/Psalm/Internal/Preloader.php, reducing the number to < ~1020 fixes the issue.

PHP Version

PHP 8.4.4 or 3b23de31db969c3c12060ff7c5ba363f65de6669

Operating System

Mac OS 15.3.1

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。