iautom8things
We haven’t been able to start using Erlang 25, yet, because I’ve been unable to get our base images built with it. Half of our developers use Macs with the new arm processors, so we’ve switched to a process that builds our images with multi arch support.
I’ve created a dumbed down process as an example of how we build it using Github Actions, here:
https://github.com/iautom8things/test-arm64-qemu-issue
You can see here where this problem happens with all supported versions (from hexpm/elixir - Docker Image) when using Erlang 25:
https://github.com/iautom8things/test-arm64-qemu-issue/runs/7104382049?check_suite_focus=true
I stopped it after 12.5 minutes.
On an ubuntu machine I have I can also duplicate this hanging:
docker buildx build --platform linux/arm64,linux/amd64 -t test-arm64-qemu-issue --build-arg ELIXIR_VERSION=1.13.4 --build-arg ERLANG_VERSION=25.0 --build-arg ALPINE_VERSION=3.16.0 .
Has anyone had any luck with this?
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex












Showing Posts 1 to 9- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
garazdawi
I don’t know if this is your problem, but because of bugs in qemu when emulating arm64 the JIT does not work there, so you need to run the arm64 docker images on a native arm64 machine, or disable the JIT (which is done when compiling Erlang).
It should manifest as a segfault and not as a hang, but maybe something is masking the segfault.
Edit: You can find some more information here: OTP 25.0-rc3 (release Candidate 3) is released - #25 by jhogberg - Erlang News - Erlang Programming Language Forum - Erlang Forums
pdgonzalez872
@garazdawi thank you for your work! I wanted to ask you if you have heard/know about attempts of using the about the
--platformflag Dockerfiles (FROM --platform=linux/amd64 python:3.7-alpine, link to a suggestion). I’ll experiment and report back, but wondered if you knew of any successes using it. Thanks!pdgonzalez872
@garazdawi sorry, I had not understood the problem before. Turns out that you can still
buildthose images on the arm platform and they will work as expected. The broken feature is trying torunimages built on other non-arm architectures on the arm one. Much like beam releases that should be built on machines that will run them.Thanks again for all that you do!
zorn
Did you ever resolve your problem?
iautom8things
Not quite, we’ve just stuck with 24 for the time being.
Nicoo
I had this problem on my m1. I have a solution that is not ideal but it works, if it can help someone:
export DOCKER_DEFAULT_PLATFORM=linux/amd64in my .zshrc file (.envfile should works also).$BUILDPLATFORMExample:
This is the only image where I need to do that. So all my other images (Postgres, Redis, etc) stay in amd64.
I hope this trick will not be required for too long.
mmyers
The QEMU bug for the OTP 25 JIT compiler failing was supposedly fixed in qemu 8.1. So maybe the problem we’re seeing with docker cross-builds is a different problem?
I’m running a docker cross-build targeting linux/arm64 from a linux/amd64 host using qemu v8.1.2 and I see a similar problem as the OP, with OTP 24 it builds fine, but with OTP 25 or 26 it will hang forever at a
RUN mix deps.getstep. Note: For memix local.rebarandmix local.hexsteps complete successfullyAre the only solutions still what @garazdawi recommends? 1) build arm64 images on a native arm64 host, or 2) use an Erlang build with the JIT disabled?
georgeguimaraes
I was having trouble building a amd64 docker image on my MacBook Pro (arm64).
I was about to give up until I tried https://orbstack.dev/ instead of Docker Desktop.
Now it’s working. Maybe orb is using a newer qemu.
mmyers
There is a new open issue for QEMU: Segmentation fault when compiling elixir app on qemu aarch64 on x86_64 host (#1953) · Issues · QEMU / QEMU · GitLab. Maybe it will gain some traction, but they say it’s hard to diagnose and work on in a container.