Skip to content

[Bug]: Linux ARM builds are missing #3781

@masihyeganeh

Description

@masihyeganeh

Is there an existing issue for this?

  • I have searched the existing issues

What happened?

Until v19.2.0 you had linux-arm64 builds, but starting from v20.0.0 you don't have that artifact anymore. It is removed in this commit.

I have a M-series MacBook, and I was using a linux docker to spin up a gaia node and develop on top of that. But since v20.0.0 I can't do it anymore because the linux arm64 artifact is missing in your releases.

Instead I have to use linux-amd64 builds now, and deal with slow run of different machine code, which is OK, but the problem is that the binary crashes with this error:

Caught SIGILL in blst_cgo_init, consult /bindings/go/README.md.

I believe it's not only M-series Macs, and it will happen in arm linux machines too.

I tested it with x86 and arm docker containers (using buildx) to see if I can run it without crash. Here is the results:

Linux x86 docker container:

# uname -a
Linux f8d2079cfc34 6.10.14-linuxkit #1 SMP Tue Apr 15 16:00:54 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
# ./gaiad-v24.0.0-linux-amd64
Caught SIGILL in blst_cgo_init, consult <blst>/bindings/go/README.md.

Linux arm docker container:

# uname -a
Linux 337fe8f996a7 6.10.14-linuxkit #1 SMP Tue Apr 15 16:00:54 UTC 2025 aarch64 Linux
# ./gaiad-v24.0.0-linux-amd64 
Caught SIGILL in blst_cgo_init, consult <blst>/bindings/go/README.md.

Running the darwin amd64 binary natively on M-series MacBook (which rosetta should run it with no problem):

# uname -a
Darwin Masihs-MacBook-Pro-M4-Max.local 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 19:53:27 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6041 arm64
# ./gaiad-v24.0.0-darwin-amd64
Caught SIGILL in blst_cgo_init, consult <blst>/bindings/go/README.md.

But as expected, running gaiad-v24.0.0-darwin-arm64 natively on M-series MacBook works fine.

I looked into your code and I believe it comes from supranational/blst dependency and they actually have a caveats part on their README that mentions this.

I see two possible fixes for this:

  1. Return the arm builds for linux: Which I already sent a PR for that
    build: Linux Arm64 binary release #3778

  2. Pass portable flag to cgo when compiling amd builds: As mentioned in the caveats part of blst project README, you need to pass some flags to cgo. Here is what I found in the internet:

Make sure you are using gcc 7.3.1 or newer
Add the following environment variables:
export CGO_CFLAGS="-O -D__BLST_PORTABLE__"
export CGO_CFLAGS_ALLOW="-O -D__BLST_PORTABLE__"

Gaia Version

from v20.0.0 to v24.0.0

How to reproduce?

I used docker buildx to create linux amd and arm images and docker exec'd into them, downloaded the binary from your release page in GitHub and run them normally and saw it crashed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    gaiastatus: waiting-triageThis issue/PR has not yet been triaged by the team.type: bugIssues that need priority attention -- something isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions