Project

General

Profile

Actions

Bug #16510

closed

irb crashes when hitting 'Home' or 'End' keys

Added by packerbacker89 (Josh Johnson) about 4 years ago. Updated over 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:96870]

Description

There were similar bugs opened in the past few months, but they all appear to be closed.

System: Ruby 2.7.0, reline 0.1.2, irb 1.2.1

Open irb and hit the 'Home' or 'End' key on the keyboard. This should go to the beginning / end of the line. Instead, the console crashes and the following traceback is provided:

	35: from /x/ruby-2.7.0/bin/irb:23:in `<main>'
	34: from /x/ruby-2.7.0/bin/irb:23:in `load'
	33: from /x/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
	32: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:398:in `start'
	31: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:469:in `run'
	30: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:469:in `catch'
	29: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:470:in `block in run'
	28: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:535:in `eval_input'
	27: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `each_top_level_statement'
	26: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `catch'
	25: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `block in each_top_level_statement'
	24: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `loop'
	23: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:138:in `block (2 levels) in each_top_level_statement'
	22: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:166:in `lex'
	21: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:516:in `block in eval_input'
	20: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:693:in `signal_status'
	19: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:517:in `block (2 levels) in eval_input'
	18: from /x/ruby-2.7.0/lib/ruby/2.7.0/irb/input-method.rb:258:in `gets'
	17: from /x/ruby-2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	16: from /x/ruby-2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	15: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:170:in `readmultiline'
	14: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:232:in `inner_readline'
	13: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:232:in `loop'
	12: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:233:in `block in inner_readline'
	11: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:262:in `read_io'
	10: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:262:in `loop'
	 9: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:286:in `block in read_io'
	 8: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:234:in `block (2 levels) in inner_readline'
	 7: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:234:in `each'
	 6: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline.rb:235:in `block (3 levels) in inner_readline'
	 5: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/line_editor.rb:829:in `input_key'
	 4: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/line_editor.rb:787:in `normal_char'
	 3: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/line_editor.rb:758:in `process_key'
	 2: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/line_editor.rb:1109:in `ed_insert'
	 1: from /x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/unicode.rb:70:in `get_mbchar_width'
/x/ruby-2.7.0/gems/reline-0.1.2/lib/reline/unicode.rb:70:in `encode': "\\xCF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

In addition, hitting the 'Insert', 'Page Up', and 'Page Down' keys result in odd characters shown in the console (such as "^[[2~"). This is only a minor issue compared to the console crash.

Updated by packerbacker89 (Josh Johnson) about 4 years ago

Note: none of this behavior occurs in Ruby 2.6.5. This is related exclusively to 2.7.0.

Updated by aycabta (aycabta .) about 4 years ago

What OS and virtual console software (Terminal.app, command prompt, xterm...) are you using?

Updated by packerbacker89 (Josh Johnson) about 4 years ago

I've found the issue using RedHat 6.10 and reproduced the behavior in CentOS 6.

I was using GNOME Terminal (v 2.31.3) when I discovered the issue.
I checked, and it is working somewhat correctly in xterm and konsole. That is, it does not crash upon hitting 'Home' or 'End'. The odd characters still appear upon hitting 'Insert', 'Page Up', and 'Page Down'.

Actions #4

Updated by nobu (Nobuyoshi Nakada) about 4 years ago

  • Description updated (diff)

Updated by mame (Yusuke Endoh) about 4 years ago

It works perfectly for me. I'm using GNOME Terminal (GNOME Terminal 3.34.2 using VTE 0.58.2 +BIDI +GNUTLS) in Ubuntu 19.10.

Updated by jaruga (Jun Aruga) about 4 years ago

Hi, packerbacker89.
Here are the centos 6 containers, tag 6 and 6.X.
https://hub.docker.com/_/centos/

If you can reproduce the error on the containers, and you can provide the Dockerfile to reproduce it, it might be helpful.

Updated by aycabta (aycabta .) about 4 years ago

@packerbacker89 (Josh Johnson)
Could you show a full result of gnome-terminal --version?

@jaruga (Jun Aruga)
I think the CUI access via Docker is sometimes not good. It's not perfect compatibility.

Updated by packerbacker89 (Josh Johnson) about 4 years ago

@aycabta (aycabta .)
Here is the gnome-terminal version: GNOME Terminal 2.31.3

@jaruga (Jun Aruga)
I'll try to work on reproducing it via the container when I have some time.

Actions #9

Updated by aycabta (aycabta .) about 4 years ago

  • Status changed from Open to Closed

Applied in changeset git|5d124a3b68982e779946804b5b9578c403c6bdf2.


[ruby/reline] Support GNOME style Home/End key sequences [Bug #16510]

https://github.com/ruby/reline/commit/788f0df845

Updated by aycabta (aycabta .) about 4 years ago

This bug was based on unsupported key sequences environment. This was a good chance to survey it for me. Thank you.

ref. http://blog.bachi.net/?p=2082

Updated by yvo@yvo.net (Yvo van Beek) over 3 years ago

I noticed this issue when I connect to my Ubuntu 20.04 server and I press Home or End in the Rails console. This is a new issue introduced with Ruby 2.7.0.

I was using the macOS terminal and I had the Home key mapped to \033[H and the End key mapped to \033[F. Those key commands seem to crash the IRB (UndefinedConversionError).

Now that I'm using macOS Catalina with ZSH, I can use \001 for Home and \005 for End. That provides a workaround for this issue.
See https://apple.stackexchange.com/a/271648/192935 for more information on the key mappings.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0