Iex crashes often - Assertion failed: (strlen(saved_rl_state.raw_prompt) < BUFFSIZE)

I work on probably half a dozen Elixir projects and I often run things like:

$ iex -S mix phx.server

So I run the service but also have an iex prompt available should I need it. But it crashes with the following message often:

Assertion failed: (strlen(saved_rl_state.raw_prompt) < BUFFSIZE), function mirror_slaves_echo_mode, file pty.c, line 190.

      iex: Oops, crashed (caught SIGABRT) - this should not have happened!
                                                                          If you need a core dump, re-configure with --enable-debug and rebuild
                            Resetting terminal and cleaning up...

It seems to occur at random, and usually happens when I’m not actively using the iex prompt. On a typically day it happens 5-10 times. Obviously since it occurs in development I can just restart it manually but it’s still a hassle dealing with this. It’s been like this for probably a year or so, and seems to be getting worse, hence why I’m posting this.

My environment:

elixir          1.12.3
erlang          24.1.3

OSX Version 12.1 (21C52)

1 Like

This feels like an issue with the underlying erlang install, since nothing in the iex code itself involves C code.

1 Like

If you search for mirror_slaves_echo_mode then a tool called rlwrap shows up. Could it be that you are using it? It seems like it is that tool that is crashing.

3 Likes

Also the “prompt” part : what is the shell and terminal emulator that you use ? Could you try another setup for one day to see if it acts different?

Also check your readline version (but I do not know if erlang uses the system readline).

1 Like

Thanks! That was it @garazdawi ! Had I run type -a iex before posting this I would seen I set an alias a while back that set iex to rlwrap iex.

2 Likes