From f7dc76c955366b36e8139270fb52610f3fd9f207 Mon Sep 17 00:00:00 2001 From: Logan Date: Sun, 16 Aug 2026 16:27:52 -0400 Subject: [PATCH] docs(android): an arm64 image will not run on an x86_64 host Emulator 37 refuses cross-architecture emulation outright -- "Avd's CPU Architecture 'arm64' is not supported by the QEMU2 emulator on x86_64 host" -- and there is no flag for it. Google dropped it. That matters because the previous commit's finding points at arm64 as the ABI that works, so the obvious next move is to boot an arm64 AVD, and the obvious next move costs a 3.8 GB download before it fails. Written down so the next session does not spend it. The consequence is stated rather than hidden: the claim that arm64 avoids the seccomp trap rests on reading modernc's two code paths, not on having run it. Verifying it needs an arm64 host, a physical device or adb connect. --- .../references/android-tier.md | 20 +++++++++++++++---- .planning/NOTES.md | 16 +++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.pi/skills/yellowjacket-dev/references/android-tier.md b/.pi/skills/yellowjacket-dev/references/android-tier.md index 1c7a8a0..3bc4780 100644 --- a/.pi/skills/yellowjacket-dev/references/android-tier.md +++ b/.pi/skills/yellowjacket-dev/references/android-tier.md @@ -118,10 +118,22 @@ Android permits. `grep -c SYS_LSTAT ccgo_linux_arm64.go` is 0. Go's own `syscall` package already uses `fstatat` on both architectures, which is why this is *only* the modernc path. -So: **verify on arm64, not on the default emulator.** Use an -`arm64-v8a` system image (slow on an x86_64 host — it is full software -emulation) or a real device. `make android-smoke` on an x86_64 AVD will -report a `SIGSYS` tombstone that says nothing about your change. +So: **verify on arm64, and on this machine that means a real device.** +`make android-smoke` on an x86_64 AVD reports a `SIGSYS` tombstone that +says nothing about your change. + +**Do not reach for an arm64 system image — it will not run here, and +finding that out costs a 3.8 GB download.** Emulator 37 refuses +outright: + +``` +FATAL | Avd's CPU Architecture 'arm64' is not supported by the QEMU2 + emulator on x86_64 host. System image must match the host + architecture. +``` + +Google dropped cross-architecture emulation; there is no flag. The +options are an arm64 host, a physical device, or `adb connect` to one. Two consequences worth holding onto. The x86_64 half of the fat APK is *only* useful for emulators, and cannot work on any Android until diff --git a/.planning/NOTES.md b/.planning/NOTES.md index 65f6ffd..198fa6c 100644 --- a/.planning/NOTES.md +++ b/.planning/NOTES.md @@ -2643,3 +2643,19 @@ Three consequences: Worth knowing for anything else that reaches for a pure-Go C library: this class of bug is invisible to every build and every desktop test, and appears only under a platform's syscall filter. + +### …and the arm64 emulator is not an option on an x86_64 host + +Emulator 37.1.11 refuses outright, after the 3.8 GB image download: + +``` +FATAL | Avd's CPU Architecture 'arm64' is not supported by the QEMU2 + emulator on x86_64 host. System image must match the host + architecture. +``` + +Google dropped cross-architecture emulation and there is no flag for +it. So the arm64 claim above rests on reading modernc's two code paths, +not on having run it: verifying the shipped ABI needs an arm64 host, a +physical device, or `adb connect` to one. The image was deleted again; +do not re-download it.