Skip to content

[Bug] ARM64/aarch64 Linux Build Fails Due to gaol Library Syscall Compatibility Issues #59

@ZacharyArthur

Description

@ZacharyArthur

Issue Summary

Claudia currently cannot build on ARM64/aarch64 Linux systems due to syscall compatibility limitations in the gaol sandboxing library
dependency. This affects users on ARM64 Linux platforms who would like to use Claudia.

Environment Details

  • Platform: ARM64/aarch64 Linux
  • OS: Ubuntu 24.04 LTS (likely affects other ARM64 Linux distributions)
  • Architecture: aarch64-unknown-linux-gnu
  • Claudia Version: Current main branch

Technical Background

The challenge stems from ARM64 Linux using a different syscall architecture than x86/x86_64. ARM64 doesn't provide many "legacy" syscalls and
instead uses modernized variants:

Syscall Differences on ARM64:

  • poll → ppoll
  • epoll_wait → epoll_pwait
  • open → openat
  • access → faccessat
  • readlink → readlinkat
  • stat → fstat

Current Build Behavior

When attempting to build on ARM64 Linux:

error[E0425]: cannot find value SYS_poll in module libc
--> platform/linux/seccomp.rs:163:5
|
163 | SYS_poll as u32,
| ^^^^^^^^ not found in libc

Workaround Available

For those needing ARM64 support currently, there's a fork of gaol that addresses these syscall compatibility issues I made:

Temporary workaround in src-tauri/Cargo.toml

[patch.crates-io]
gaol = { git = "https://github.com/ZacharyArthur/gaol", branch = "fix-aarch64-syscalls" }

This patch adds conditional compilation for ARM64-specific syscall mappings and resolves the build issues.

Impact & User Base

Potentially Affected Users:

  • ARM64 Linux developers
  • Apple Silicon Mac users running Linux
  • Raspberry Pi and edge computing developers
  • ARM-based server deployments

Suggested Path Forward

It would be valuable for the claudia project to investigate ARM64 Linux support, potentially through:

  1. Research: Evaluating the syscall compatibility requirements for ARM64
  2. Upstream collaboration: Working with the gaol maintainers on proper ARM64 support
  3. Alternative approaches: Exploring other sandboxing solutions that have native ARM64 support
  4. CI integration: Adding ARM64 testing to catch future compatibility issues

Priority Consideration

With the growing adoption of ARM64 in development environments (Apple Silicon, AWS Graviton instances, etc.), ARM64 Linux support could
benefit a significant portion of the developer community.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions