colibri

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

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:

  1. Delete Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
  2. Disabled the rosette support for the terminal.
  3. Cleaned the system from the debris left behind.
  4. 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 :slight_smile:

Also Liked

bjorng

bjorng

Erlang Core Team

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

bjorng

Erlang Core Team

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

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.

colibri

colibri

I could try to help you through teamviewer program if you want?

dbysani

dbysani

Simple but this solution is enough. No need to disable JIT, change openssl versions or anything. Simply install brew using Terminal(with Rosetta disabled), install brew, install Erlang and Elixir using brew.This worked for me. Thanks a lot colibri!

Where Next?

Popular in Questions Top

JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
logicmason
Hi there, I'm working through my first release with elixir/phoenix. I've built a release with distillery and found that it crashes when I...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
Phillipp
Hey, I have a NanoPi-M3 and try to install Elixir on their Ubuntu image. I followed the Raspberry Pi installation instructions from the ...
New
mgjohns61585
Could someone help me? I'm making my first elixir program, number guessing game. I can't figure out how to convert the user's guess from ...
New
Fl4m3Ph03n1x
Background Let’s assume I have a typical GenServer that receives messages as requests, does some operation in a DB and returns responses....
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New

Other popular topics Top

lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement