php / php/php-src

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

Đang mở
#17,858 8 bình luận 0 reaction 1 người được giao Xem trên GitHub

@dstogov đang làm issue này rồi.

Từ ngày 19/2/2025.

Bug Category: JIT Extension: opcache Status: Needs Triage
Ngôn ngữ chính
C
Star
40.4k
Fork
8.2k
Merge trung bình
2 ngày 13 giờ
Pull request đã merge (30 ngày)
96

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.