v1.13.2 static linux-x86_64: SIGILL in `hash('sha256')` on CPUs without SHA-NI (Cascade Lake)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
調査の方向性
Start by reproducing the reported hash('sha256', ...) crash with the v1.13.2 static binary on a CPU without SHA-NI, then compare its build configuration with v1.13.1. Trace how StaticPHP 3.0.0-alpha1 and Zig configure PHP's SHA-256 implementation; the report names no source files or tests. Done means the static binary handles the supplied hash command on CPUs without SHA-NI while retaining correct SHA-256 output.
索引モデルが issue の本文から書いたものです。
説明
What happened?
The frankenphp-linux-x86_64 static binary from v1.13.2 crashes PHP threads with SIGILL as soon as hash('sha256', ...) is called on a CPU that lacks the SHA extensions (sha_ni). v1.13.1 (current asset, also PHP 8.5.12) works on the same machine. It looks like the SHA-256 implementation uses SHA-NI without a runtime CPU check since the move to static-php-cli v3.
Environment
- Binary:
frankenphp-linux-x86_64v1.13.2, sha256f8a54e583a23fbdf048bd6e1c6842b96ad7689117cab4c8f404dcc6b6393929b(FrankenPHP v1.13.2 PHP 8.5.12 Caddy v2.11.7) - CPU: Intel Xeon Gold 6240R (Cascade Lake) in a VM; flags include avx2, avx512f/dq/cd/bw/vl/vnni, no sha_ni
- OS: Debian 12, kernel 6.1
- Works fine on a QEMU VM whose CPU exposes
sha_ni
Reproduce
./frankenphp php-cli -r 'echo strlen(hash("sha256", str_repeat("x", 100000)));'
# v1.13.2 → Illegal instruction (exit 132)
# v1.13.1 → 64
Other functions tested fine (base64, json, preg, mbstring, bin2hex, str_replace, explode, addslashes).
In worker mode (Laravel Octane) every PHP thread dies on the first request (audit log: comm="php-2" exe=".../frankenphp" sig=4), so the service crash-loops.
Expected
Runtime CPU detection (or a baseline x86-64 build) so the binary runs on CPUs without SHA-NI, as v1.13.1 did.
May be problem with StaticPHP 3.0.0-alpha1 and zig in Configure Command?
Build Type
Static binary
Worker Mode
Yes
Operating System
GNU/Linux
CPU Architecture
x86_64
PHP configuration
phpinfo() output
PHP Version => 8.5.12
System => Linux 6.1.0-41-amd64 (Debian 12) x86_64
Build Date => Oct 21 2026 18:49:13
Server API => PHP CLI embedded in FrankenPHP
Thread Safety => enabled
Zend Extension Build => API420250925,TS
Loaded Configuration File => (none)
Additional .ini files parsed => /etc/frankenphp.d/uploads.ini, /etc/frankenphp.d/zz-hardening.ini
Configure Command (relevant part):
'--enable-zts' '--disable-zend-signals' '--enable-zend-max-execution-timers'
'--enable-opcache-jit' 'php_cv_have_avx512=no' 'php_cv_have_avx512vbmi=no'
'PHP_BUILD_PROVIDER=StaticPHP 3.0.0-alpha1' 'PHP_BUILD_COMPILER=zig'
memory_limit => 128M
max_execution_time => 0
upload_max_filesize => 50M
post_max_size => 52M
session.upload_progress.enabled => Off
opcache.enable => On
opcache.enable_cli => Off
opcache.jit => disable
Extensions: Core, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, amqp, apcu, ast,
bcmath, brotli, bz2, calendar, ctype, curl, date, dba, deepclone, dom, exif, fileinfo,
filter, frankenphp-cli, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, intl, json,
ldap, lexbor, libxml, lz4, mbstring, memcached, msgpack, mysqli, mysqlnd, openssl,
parallel, pcntl, pcre, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, posix, protobuf, random,
readline, redis, session, shmop, soap, sockets, sodium, sqlite3, ssh2, standard, sysvmsg,
sysvsem, sysvshm, tidy, tokenizer, uri, xlswriter, xml, xmlreader, xmlwriter, xsl, xz,
yaml, zip, zlib, zstd
Relevant log output
Relevant log output
- 主要言語
- Go
- スター
- 11.4k
- フォーク
- 499
- 平均マージ
- 2日 9時間
- マージ済み PR(30日)
- 40
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
php/frankenphp のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
php/frankenphp#2671 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Include frankenphp version in logs再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
php/frankenphp#2483 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
suggestion about compile.md再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンenhancement
難易度 1/5 1〜3時間 初心者へのやさしさ 68/100
php/frankenphp#601 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
php/frankenphp#2748 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 43/100
php/frankenphp#2747 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
FiloSottile/age#758 ·
-
nginx configオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
メンテナーはふだん 1 日以内に返信