← Back to issue list

fix(linter): skip foreign-arch ELF files in library linter

View original Github issue

Metadata

Project
snapcraft
Number
#6249
Type
pull request
State
open
Author
lengau
Labels
Created
2026-05-15 22:38:59+00:00
Updated
2026-05-16 15:03:20+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

The library linter calls load_dependencies() on every ELF file found in the prime directory. For foreign-arch builds (e.g. arm64 snap on an amd64 host) this invokes QEMU via binfmt to run the foreign binary, which fails with 'not a dynamic executable' errors and can SEGFAULT, producing multi-gigabyte core dumps. Add elf_machine field to _ArchConfig and get_host_elf_machine() to elf_utils.py. In library_linter.run(), skip any ELF file whose arch_tuple[2] (e_machine) does not match the host's expected value. Fixes: https://github.com/canonical/snapcraft/issues/4373 --- - [x] I've followed the [contribution guidelines](https://github.com/canonical/snapcraft/blob/main/CONTRIBUTING.md). - [x] I've signed the [CLA](http://www.ubuntu.com/legal/contributors/). - [x] I've successfully run `make lint && make test`. - [ ] I've added or updated any relevant documentation. - [ ] In documents I changed, I [added a meta description](https://canonical-starflow.readthedocs-hosted.com/how-to/add-a-page-meta-description/) if one was missing. - [ ] I've updated the relevant release notes.

Evaluation history

No evaluation history available.