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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions