Skip to content

ci: pin QEMU binfmt for the arm64 cross-build (pre-empt the blox-ai segfault)#77

Merged
ehsan6sha merged 2 commits into
mainfrom
ci/pin-qemu-binfmt
Jun 18, 2026
Merged

ci: pin QEMU binfmt for the arm64 cross-build (pre-empt the blox-ai segfault)#77
ehsan6sha merged 2 commits into
mainfrom
ci/pin-qemu-binfmt

Conversation

@ehsan6sha

Copy link
Copy Markdown
Member

Why

ARCH_SUPPORT="linux/arm64" — every image is cross-built under QEMU emulation on the amd64 runner. This workflow had no setup-qemu-action and relied on the runner's default binfmt.

On 2026-06-18 the sibling repo blox-ai (which does use setup-qemu-action) failed its arm64 build with qemu: uncaught target signal 11 (Segmentation fault) while dpkg ran libc-bin's post-install during apt-get install — a QEMU emulation regression (the same Dockerfile was green weeks earlier). fula-gateway's Dockerfile does the same Debian apt-get install, so fula-ota's release build is at risk of the identical crash.

What

Add docker/setup-qemu-action@v3 pinned to tonistiigi/binfmt:latest ahead of buildx in every job. This pin is validated — it took blox-ai's arm64 build from red to green (the libc-bin trigger processed cleanly under it).

Honest caveat

fula-ota's last release build was green on 2026-06-01 using the runner's default QEMU — a different QEMU source from blox-ai's setup-qemu-action binfmt. So this is defensive: fula-ota might not have hit the bug, but the apt-get pattern is identical and the pin is low-risk (a known-good QEMU + standard practice for arm64 cross-builds). Recommend merging before the next release build so a rebuild doesn't risk a second red build.

:latest is a moving tag; pin a specific qemu-vX.Y.Z if reproducibility is preferred.

🤖 Generated with Claude Code

ehsan6sha and others added 2 commits June 18, 2026 17:15
ARCH_SUPPORT is linux/arm64-only, so every image is cross-built under QEMU on
the amd64 runner. The workflow had no setup-qemu-action and relied on the
runner's default binfmt, which can segfault ("qemu: uncaught target signal 11")
emulating arm64 dpkg/libc-bin in the fula-gateway apt-get layer -- the same
failure blox-ai hit on 2026-06-18 (fixed there by the same pin, validated green).

Add setup-qemu-action with a pinned tonistiigi/binfmt to every build job so the
arm64 cross-build is reproducible. Defensive: fula-ota's last release build was
green 2026-06-01 on the runner default, but the runner image evolves and the
apt-get pattern is identical to the one that regressed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ehsan6sha ehsan6sha merged commit ea5209f into main Jun 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant