hexpm/bob

docker image : Reverse-searching (^R) a long command crashes iex

dorian-marchal opened this issue · 3 comments

Docker Image

hexpm/elixir:1.12.2-erlang-24.0.5-alpine-3.13.5 (same issue with 3.14.0)

Description

In iex, when using the reverse-search (Ctrl+R) to get a long command (about 50 chars), the REPL crashes.

Reproducing steps

docker run -it hexpm/elixir:1.12.2-erlang-24.0.5-alpine-3.13.5 iex

iex(1)> "a short string"
"a short string"

*do Ctrl+R here, then press Enter: no problem*

iex(3)> "this is a very long string that will crash iex"
"this is a very long string that will crash iex"

*do Ctrl+R here, then press Enter: iex crashes with no error message*

This doesn't happen with the official image (elixir:1.12.2-alpine) but unfortunately I need to explicitly pick versions for erlang and alpine.

Note: if I run sh first, then iex, I get an "Illegal Instruction" error instead of a crash.

Thank you for the report. I was able to reproduce this on official alpine image with elixir installed with apk:

~% docker run --rm -it alpine
/ # apk add elixir
...
OK: 84 MiB in 22 packages
/ # iex
Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit:no-native-stack]

Interactive Elixir (1.12.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> "this is a very long string that will crash iex"
"this is a very long string that will crash iex"
(search)`Illegal instructionlong string that will crash iex"
                            / #
                                / #

In fact I can also reproduce this with the erlang shell:

~% docker run --rm -it alpine
/ # apk add erlang
...
OK: 71 MiB in 19 packages
/ # erl
Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit:no-native-stack]

Eshell V12.0  (abort with ^G)
1> "this is a very long string that will crash iex"
(search)`Illegal instructionlong string that will crash iex"
                            / #

given it's a bug in neither Bob nor Elixir, I'm gonna close this. Could you follow-up on it elsewhere, perhaps https://github.com/erlang/otp/issues/new/choose?

Thanks, follow-up issue: erlang/otp#5116

FYI that's fixed in OTP 24.0.6