FrankenPHP images crash with Illegal instruction on amd64 CI runner #10

Closed
opened 2026-07-07 08:31:08 +00:00 by geusebio · 1 comment
Owner

Problem

The FrankenPHP images (FrankenPHP.Dockerfile) install php-zts packages from pkg.henderkes.com. On the Forgejo CI runner's amd64 CPU, both frankenphp version and php --version crash with Illegal instruction (core dumped), so the /etc/validate.d/frankenphp.sh and /etc/validate.d/php.sh validations fail. Caught by the new test gate in #9 (run 192).

The images work on native aarch64 (local Mac builds). FrankenPHP.Dockerfile already documents the same crash class on aarch64 for php-zts-igbinary/php-zts-redis, which are omitted for that reason.

Likely cause: the upstream builds target a newer x86-64 microarchitecture level (v2/v3, e.g. requiring SSE4/AVX) than the runner CPU exposes.

Current state

The frankenphp test dependencies in test.yml are commented out (see the "FrankenPHP:" comments) so the gate isn't permanently red. This means frankenphp images build and push unvalidated.

Avenues to investigate

  1. Check what microarch level the pkg.henderkes.com php-zts builds target, and whether baseline-x86-64 builds are available.
  2. Check the runner host's CPU flags (lscpu//proc/cpuinfo) — if it's a VM with a restrictive CPU model (qemu64/kvm64 without SSE4/AVX), fixing CPU passthrough on the VM may be the real fix.
  3. Consider the official FrankenPHP static binary or docker image as an alternative distribution.

Done means

Re-enable the commented-out frankenphp entries in test.yml and the full test suite passes in the Build workflow.

## Problem The FrankenPHP images (`FrankenPHP.Dockerfile`) install php-zts packages from pkg.henderkes.com. On the Forgejo CI runner's amd64 CPU, both `frankenphp version` and `php --version` crash with **Illegal instruction (core dumped)**, so the `/etc/validate.d/frankenphp.sh` and `/etc/validate.d/php.sh` validations fail. Caught by the new test gate in #9 (run 192). The images work on native aarch64 (local Mac builds). `FrankenPHP.Dockerfile` already documents the same crash class on aarch64 for `php-zts-igbinary`/`php-zts-redis`, which are omitted for that reason. Likely cause: the upstream builds target a newer x86-64 microarchitecture level (v2/v3, e.g. requiring SSE4/AVX) than the runner CPU exposes. ## Current state The frankenphp test dependencies in `test.yml` are commented out (see the "FrankenPHP:" comments) so the gate isn't permanently red. This means frankenphp images build and push **unvalidated**. ## Avenues to investigate 1. Check what microarch level the pkg.henderkes.com php-zts builds target, and whether baseline-x86-64 builds are available. 2. Check the runner host's CPU flags (`lscpu`/`/proc/cpuinfo`) — if it's a VM with a restrictive CPU model (qemu64/kvm64 without SSE4/AVX), fixing CPU passthrough on the VM may be the real fix. 3. Consider the official FrankenPHP static binary or docker image as an alternative distribution. ## Done means Re-enable the commented-out frankenphp entries in `test.yml` and the full test suite passes in the Build workflow.
Author
Owner

Scope update: this also blocks the build, not just the tests — FrankenPHP.Dockerfile runs /usr/local/bin/validate as an image-build step, so the frankenphp bake target fails on the runner (see Build run 204). The build-frankenphp job in build.yml is now also commented out pending this issue, alongside the test.yml entries.

Scope update: this also blocks the *build*, not just the tests — FrankenPHP.Dockerfile runs /usr/local/bin/validate as an image-build step, so the frankenphp bake target fails on the runner (see Build run 204). The build-frankenphp job in build.yml is now also commented out pending this issue, alongside the test.yml entries.
Sign in to join this conversation.
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Grey.ooo/docker#10
No description provided.