classic snaps do not work on ARM64 kernel configured to use 64k pages
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Snapcraft |
Fix Released
|
Undecided
|
Unassigned | ||
subiquity |
New
|
Undecided
|
Unassigned |
Bug Description
patchelf (in the version bundled with snapcraft) creates segments that overlap when aligned to a page size greater than 4k, e.g. from readelf -h on the python3.8 interpreter in the current subiquity snap:
LOAD 0x000000 0x00000000003ff000 0x00000000003ff000 0x001000 0x001000 RW 0x1000
LOAD 0x001000 0x0000000000400000 0x0000000000400000 0x4bab44 0x4bab44 R E 0x1000
This makes the kernel very unhappy indeed and it refuses to load such a binary (execve returns EINVAL). Upstream patchelf fixed this in https:/
[Problem Description]
Subiquity fails to execute when running on ARM64 with -64k Kernel. It exits with the "Segmentation fault" message
[Additional Info]
The problem seems to be with python3.8 binary in the snap. The same problem occurs with wget binary in the same snap, but ubuntu-distro-info works fine. Both python3.8 and wget are statically compiled, while ubuntu-distro-info is not.
root@jammy-arm:~# file /snap/subiquity
/snap/subiquity
root@jammy-arm:~# /snap/subiquity
Segmentation fault
root@jammy-arm:~# ldd /snap/subiquity
not a dynamic executable
root@jammy-arm:~# file /snap/subiquity
/snap/subiquity
root@jammy-arm:~# /snap/subiquity
Segmentation fault
root@jammy-arm:~# ldd /snap/subiquity
not a dynamic executable
root@jammy-arm:~# file /snap/subiquity
/snap/subiquity
root@jammy-arm:~# /snap/subiquity
ubuntu-distro-info: You have to select exactly one of --all, --devel, --latest, --lts, --stable, --supported, --supported-esm, --series, --unsupported.
root@jammy-arm:~# ldd /snap/subiquity
linux-vdso.so.1 (0x0000fffe7227
libc.so.6 => /snap/core20/
/snap/
The same VM, using the non -64k kernel works:
# uname -a
Linux jammy-arm 5.15.0-27-generic #28-Ubuntu SMP Thu Apr 14 12:56:31 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
# /snap/subiquity
Works
Tried other kernels (5.17, 5.19) with the same error.
[Reproducer]
1. Run a VM in ARM64 architecture:
virt-install --arch aarch64 --boot uefi --osinfo detect=
2. Connect to the VM and install a -64k kernel
https:/
3. Reboot in the kernel (I disabled secure boot)
# uname -a
Linux jammy-arm 5.15.0-
4. Install subiquity
sudo snap install subiquity
5. Try to run it
# /snap/bin/subiquity
Segmentation fault
---
ProblemType: Bug
AlsaDevices:
total 0
crw-rw---- 1 root audio 116, 1 Jan 10 18:24 seq
crw-rw---- 1 root audio 116, 33 Jan 10 18:24 timer
AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
ApportVersion: 2.20.11-0ubuntu82.3
Architecture: arm64
ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1:
CRDA: N/A
CasperMD5CheckR
DistroRelease: Ubuntu 22.04
IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig'
Lsusb:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Lsusb-t:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=
MachineType: QEMU QEMU Virtual Machine
Package: linux (not installed)
PciMultimedia:
ProcEnviron:
TERM=xterm-
PATH=(custom, no user)
LANG=C.UTF-8
SHELL=/bin/bash
ProcFB:
ProcKernelCmdLine: BOOT_IMAGE=
ProcVersionSign
RelatedPackageV
linux-
linux-
linux-firmware N/A
RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
Tags: jammy uec-images
Uname: Linux 5.15.0-
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: N/A
_MarkForUpload: True
dmi.bios.date: 02/06/2015
dmi.bios.release: 0.0
dmi.bios.vendor: EFI Development Kit II / OVMF
dmi.bios.version: 0.0.0
dmi.chassis.type: 1
dmi.chassis.vendor: QEMU
dmi.chassis.
dmi.modalias: dmi:bvnEFIDevel
dmi.product.name: QEMU Virtual Machine
dmi.product.
dmi.sys.vendor: QEMU
no longer affects: | linux (Ubuntu) |
summary: |
- Subiquity segfault in ARM64 with -64k Kernel + classic snaps do not work on ARM64 kernel configured to use 64k pages |
description: | updated |
tags: | added: craft-1546 |
Changed in snapcraft: | |
status: | New → Fix Committed |
Changed in snapcraft: | |
status: | Fix Committed → Fix Released |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 2002427
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.