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.

Last Post!

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Elixir isn’t segfaulting, the VM is segfaulting. Some underlying C library changed during the OS upgrade that is linked in, and so the installation is corrupted.

Where Next?

Popular in Questions Top

vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
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
marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New

Other popular topics Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New

We're in Beta

About us Mission Statement