You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unfortunately, QEMU + arm64 + Erlang/OTP 25/26/27 crashes with segmentation fault. The temporary workaround applied since ejabberd 23.04 is to use the binary installers (and Dockerfile uses METHOD=package), as detailed in #3983.
QEMU is fixed!
Good news: the original problem is solved in QEMU 8.1.0, so we can revert that temporary workaround and use a newer QEMU to build the container images from source directly again.
This patch contains:
Use QEMU 8.1.5 which includes the fix for arm64 crash
The QEMU issue is
https://gitlab.com/qemu-project/qemu/-/issues/1034
The fix commit is
https://gitlab.com/qemu-project/qemu/-/commit/9719f125b803f4e0fda834cd74a60dfa4ca398e2
which was first included in QEMU 8.1.0, so 8.1.5 should be good
Update Erlang to 27.0 and Elixir to 1.17.3 to fix arm compilation
Erlang 27.1 is not yet available in https://hub.docker.com/_/erlang
Compiling with Erlang 26.2 crashes with:
==> eex (compile)
=ERROR REPORT==== 20-Sep-2024::11:58:41.754278 ===
Error in process <0.115.0> with exit value:
{function_clause,
[{'Elixir.Module.Types','-warnings/5-inlined-1-',
[{column,8}],
[{file,"lib/module/types.ex"},{line,13}]},
{'Elixir.Enum',flat_map_list,2,[{file,"lib/enum.ex"},{line,4353}]},
{'Elixir.Module.ParallelChecker',check_module,3,
[{file,"lib/module/parallel_checker.ex"},{line,264}]},
{'Elixir.Module.ParallelChecker','-spawn/4-fun-0-',6,
[{file,"lib/module/parallel_checker.ex"},{line,82}]}]}
TODO: Remove in Dockerfile the METHOD=package and all associated lines, as they would be unnecessary
We expect to begin offering Arm runners for open source projects by the end of the year.
That would allow us to generate arm64 container images without using QEMU at all: faster image generation and smaller build scripts (Dockerfile and container.yml).
Proposal
Maybe, instead of switching now to QEMU 8.1.0 and build image directly from source, we can wait a few months and jump directly to the definitive solution: build ARM image using ARM-based runner.
And once that simplification is done, #4261 can be updated and finally applied.
The text was updated successfully, but these errors were encountered:
Summary of past events
ejabberd 22.05 introduced the
ejabberd
container image, generated in Github Actions with variants for amd64... and arm64 thanks to QEMU.Unfortunately, QEMU + arm64 + Erlang/OTP 25/26/27 crashes with segmentation fault. The temporary workaround applied since ejabberd 23.04 is to use the binary installers (and Dockerfile uses
METHOD=package
), as detailed in #3983.QEMU is fixed!
Good news: the original problem is solved in QEMU 8.1.0, so we can revert that temporary workaround and use a newer QEMU to build the container images from source directly again.
This patch contains:
METHOD=package
and all associated lines, as they would be unnecessaryARM runner!
Even better news:
That would allow us to generate arm64 container images without using QEMU at all: faster image generation and smaller build scripts (
Dockerfile
andcontainer.yml
).Proposal
Maybe, instead of switching now to QEMU 8.1.0 and build image directly from source, we can wait a few months and jump directly to the definitive solution: build ARM image using ARM-based runner.
And once that simplification is done, #4261 can be updated and finally applied.
The text was updated successfully, but these errors were encountered: