[PHP 8.4] Tracing JIT wrong optimization for LazyProxy instances

未關閉
#25,254 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
48/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
活躍
技術堆疊
c, php

研究方向

Start by reading the linked PHP core issue #23628 and its patch, then run the existing regression tests mentioned there on PHP 8.4 with tracing JIT enabled. The report says those tests fail on PHP 8.4.27 and asks for the fix to be backported; done means the relevant tests pass on the 8.4 line with tracing JIT enabled. The issue does not name source files or tests, so finding the affected code will take familiarity with the PHP engine.

由索引模型根據 Issue 內容生成。

描述

Bug Status: Needs Triage
Description

The same issue described in https://github.com/php/php-src/issues/23628 exists on the 8.4 line. It doesn't apply to 8.3 and earlier since LazyProxy wasn't added yet. It doesn't appear that the fix was backported. I figured opening a new issue for the backport request was more likely to be seen than commenting on the already-closed one :)

The existing regression tests added in the patch fail on 8.4.27 (and I assume earlier) but if you need any additional information, I'm happy to provide it.

  • PHP: 8.4.27 (cli), NTS, built Nov 5 2026, from docker-library/php
  • Base image: php:8.4.27-fpm-alpine3.23 (Alpine 3.23.8, x86_64)
  • JIT settings: opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M, opcache.jit_hot_loop=64
  • Extra extensions loaded: apcu and excimer. Excimer is worth naming because it hooks into the engine, though the A/B test showed JIT alone decides pass or fail.
PHP Version
PHP 8.4.27 (cli) (built: Nov  5 2026 19:02:58) (NTS)
  Copyright (c) The PHP Group
  Built by https://github.com/docker-library/php
  Zend Engine v4.4.27, Copyright (c) Zend Technologies
      with Zend OPcache v8.4.27, Copyright (c), by Zend Technologies
Operating System

Alpine Linux 3.23.8 (official php alpine docker image)

主要語言
C
星號
41.8k
分支
8.5k
平均合併
2 天 12 小時
30 天內合併 PR
137

環境準備

  • 沒有 Dockerfile 或 Docker Compose 檔案
  • 沒有 Pull Request 範本
  • 閱讀貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

php/php-src 的其他 Issue

查看 php/php-src 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。