colibri
Segmentation fault after update elixir and erlang
Hi,
MacBook Pro (13-inch, M1, 2020)
MacOS Big Sur 11.3.1
Homebrew (all updated to the latest version)
After updating to erlang (24.0 OTP) and elixir (1.12)
colibri@colibri-core ~ % erl
zsh: segmentation fault erl
colibri@colibri-core ~ % iex
zsh: segmentation fault iex
colibri@colibri-core ~ % mix local.rebar
zsh: segmentation fault mix local.rebar
colibri@colibri-core ~ % mix local.hex
zsh: segmentation fault mix local.hex
colibri@colibri-core ~ % mix archive.install hex phx_new
zsh: segmentation fault mix archive.install hex phx_new
after a while
colibri@colibri-core ~ % iex
Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace]
Interactive Elixir (1.12.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
(l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
a
colibri@colibri-core ~ % iex
zsh: segmentation fault iex
Marked As Solved
colibri
I got this laptop in December 2020.
Installed Homebrew right away, it was only rosette-enabled at the time.
Thank you very much for pointing out this problem and for pointing out a solution.
STEPS:
- Delete
Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" - Disabled the rosette support for the terminal.
- Cleaned the system from the debris left behind.
- Install
Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
DONE
P.S It’s hard to be among the pioneers ![]()
Also Liked
bjorng
No need to send any more files. I see the problem:
The build system type is determined as x86_64-apple-darwin20.4.0, not as aarch64-apple-darwin20.4.0 as it should be on an M1 Mac. That will cause configure to enable the JIT.
So it seems that on your M1 Mac homebrew is running under Rosetta emulation (emulating an Intel Mac), at least when the configure script is run. I don’t know why that is happening. Did the first versions of homebrew for M1 Macs run under emulation and you are still using that version? With my recently installed homebrew, the configure script correctly determines the build type to be aarch64-apple-darwin20.4.0.
bjorng
I can’t reproduce your problem.
It should not be possible to have the JIT enabled in OTP 24 on an M1 Mac, because the configure script will complain if you try to enable the JIT:
./configure --enable-jit
.
.
.
configure: error: JIT only works on x86 64-bit
ERROR: /Users/bjorng/git/otp/erts/configure failed!
If you run ./configure without any other options, the JIT will be automatically disabled unless the platform is x86_64.
I can only assume that something very weird happened when homebrew upgraded the version of Erlang to OTP 24. I can’t reproduce the problem myself, because I have never used homebrew before and can’t do the same update and upgrade that you did. When I downloaded homebrew for the first time and installed Erlang on my M1 Mac, it worked immediately without any problems.
I would recommend that you remove the --disable-jit line from the homebrew formula and force homebrew to rebuild Erlang from scratch. That should work. If not, I would be very interested in build logs to see what parameters homebrew passed to configure and which environment variables that were set. If it happens to be a bug in the configure script for the OTP that would incorrectly enable the JIT on a M1 under some circumstances, I would want to fix it.
paulstatezny
To anyone reading this thread and wondering, “how can I know for sure if my terminal is running in Rosetta mode?” Here’s an article that helped me.
Doesn’t seem quick and easy to find on Google, so thought I’d share.








