Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Up arrow raises Encoding::UndefinedConversionError #86

Closed
dmlary opened this issue Mar 5, 2020 · 6 comments
Closed

Up arrow raises Encoding::UndefinedConversionError #86

dmlary opened this issue Mar 5, 2020 · 6 comments

Comments

@dmlary
Copy link

dmlary commented Mar 5, 2020

Description

ruby 2.7.0 & irb 1.2.1 (2019-12-24), press up arrow and the following exception is raised:

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

Terminal Emulator

What's your terminal emulator? iTerm2

Pertinent environment variables:

LANG=en_US.UTF-8
LC_TERMINAL=iTerm2
LC_TERMINAL_VERSION=3.3.9
TERM=xterm
TERM_PROGRAM=iTerm.app
TERM_PROGRAM_VERSION=3.3.9
@ShamoX
Copy link

ShamoX commented Dec 1, 2021

Hello,

No news on that bug/problem ?

I'm on MacOs and got the same since I use zsh (but I had a lot of other things to make it work)

@osyo-manga
Copy link
Contributor

hi, @ShamoX . Can you tell me the version of Ruby, IRB and Reline?
I couldn't reproduce the problem in my environment as follows.

% echo $LANG
ja_JP.UTF-8
% echo $LC_TERMINAL
iTerm2
% echo $LC_TERMINAL_VERSION
3.4.13
% echo $TERM
xterm-256color
% echo $TERM_PROGRAM
iTerm.app
% echo $TERM_PROGRAM_VERSION
3.4.13
% RBENV_VERSION=2.7.0 irb
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [-darwin21]"
irb(main):002:0> IRB::VERSION
=> "1.2.1"
irb(main):003:0> Reline::VERSION
=> "0.1.2"
irb(main):004:0>

Also, is it possible to do gem install irb to check with the latest version of irb?

@ShamoX
Copy link

ShamoX commented Dec 1, 2021

Ahah, I'm waking up something old it seems.

In my terminal without Ruby version imposed by rbenv (using 2.7.0 installed on the system):

rlaures@Chacana infra % echo $LANG
fr_FR.UTF-8
rlaures@Chacana infra % echo $LC_TERMINAL

rlaures@Chacana infra % echo $LC_TERMINAL_VERSION

rlaures@Chacana infra % echo $TERM
xterm-256color
rlaures@Chacana infra % echo $TERM_PROGRAM
Apple_Terminal
rlaures@Chacana infra % echo $TERM_PROGRAM_VERSION
443
rlaures@Chacana infra % RBENV_VERSION=2.7.0 irb
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin15]"
irb(main):002:0> IRB::VERSION
=> "1.2.1"
irb(main):003:0> Reline::VERSION
=> "0.1.2"
irb(main):004:1* def toto
irb(main):005:1*   1
irb(main):006:0> end
=> :toto
irb(main):007:0> toto
=> 1
irb(main):008:0> toto
=> 1
irb(main):009:0>

Also working on ruby 3 :

rlaures@Chacana infra % rbenv global 3.0.2
rlaures@Chacana infra % irb                
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin21]"
irb(main):002:0> IRB::VERSION
=> "1.3.5"
irb(main):003:0> Reline::VERSION
=> "0.2.5"
irb(main):004:1* def toto
irb(main):005:1*   1
irb(main):006:0> end
=> :toto
irb(main):007:0> toto
=> 1
irb(main):008:0> 

When using the same terminal that failed earlier (first instruction is a up arrow that failed when I filled up the message earlier):

irb(main):001:0> Traceback (most recent call last):
	35: from /Users/rlaures/.rbenv/versions/2.7.0/bin/irb:23:in `<main>'
	34: from /Users/rlaures/.rbenv/versions/2.7.0/bin/irb:23:in `load'
	33: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
	32: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:398:in `start'
	31: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:469:in `run'
	30: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:469:in `catch'
	29: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:470:in `block in run'
	28: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:535:in `eval_input'
	27: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `each_top_level_statement'
	26: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `catch'
	25: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `block in each_top_level_statement'
	24: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `loop'
	23: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:138:in `block (2 levels) in each_top_level_statement'
	22: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:166:in `lex'
	21: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:516:in `block in eval_input'
	20: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:693:in `signal_status'
	19: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:517:in `block (2 levels) in eval_input'
	18: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/input-method.rb:258:in `gets'
	17: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	16: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	15: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:170:in `readmultiline'
	14: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:232:in `inner_readline'
	13: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:232:in `loop'
	12: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:233:in `block in inner_readline'
	11: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:262:in `read_io'
	10: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:262:in `loop'
	 9: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:286:in `block in read_io'
	 8: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:234:in `block (2 levels) in inner_readline'
	 7: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:234:in `each'
	 6: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:235:in `block (3 levels) in inner_readline'
	 5: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:829:in `input_key'
	 4: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:787:in `normal_char'
	 3: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:758:in `process_key'
	 2: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:1109:in `ed_insert'
	 1: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/unicode.rb:70:in `get_mbchar_width'
/Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/unicode.rb:70:in `encode': "\\xCF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
rlaures@Chacana i2tm % irba
rlaures@Chacana i2tm % irb
irb(main):001:1* def o_n_logn(n)
irb(main):002:1*   0.01 * n * Math.log(n) + 100
irb(main):003:0> end
=> :o_n_logn
irb(main):004:0> o_n_logn 10
=> 100.2302585092994
irb(main):005:0> o_n_logn 10000
=> 1021.0340371976183
irb(main):006:1* def o_n_2(n)
irb(main):007:1*   0.01 * n * n + 100
irb(main):008:0> end
=> :o_n_2
irb(main):009:0> o_n_2 10
=> 101.0
irb(main):010:0> o_n_2 10000
=> 1000100.0
irb(main):011:0> 
rlaures@Chacana i2tm % echo $LANG
fr_FR.UTF-8
rlaures@Chacana i2tm % echo $LC_TERMINAL


rlaures@Chacana i2tm % echo $LC_TERMINAL

rlaures@Chacana i2tm % echo $LANG       
fr_FR.UTF-8
rlaures@Chacana i2tm % echo $LC_TERMINAL

rlaures@Chacana i2tm % echo $LC_TERMINAL_VERSION

rlaures@Chacana i2tm % echo $TERM
xterm-256color
rlaures@Chacana i2tm % echo $TERM_PROGRAM
Apple_Terminal
rlaures@Chacana i2tm % echo $TERM_PROGRAM_VERSION
443
rlaures@Chacana i2tm % irb                       
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin21]"
irb(main):002:0> IRB::VERSION
=> "1.3.5"
irb(main):003:0> Reline::VERSION
=> "0.2.5"
irb(main):004:1* def toto
irb(main):005:1*   1
irb(main):006:0> end
=> :toto
irb(main):007:0> toto
=> 1
irb(main):008:0> toto
=> 1
irb(main):009:0>

So maybe rib changed because I did a rbenv global 3.0.2 in the other terminal.

So effectively, doing a rbenv global 2.7.0 and then I get back the error.

rlaures@Chacana i2tm % rbenv global 2.7.0 
rlaures@Chacana i2tm % irb               
irb(main):001:0> Traceback (most recent call last):
	35: from /Users/rlaures/.rbenv/versions/2.7.0/bin/irb:23:in `<main>'
	34: from /Users/rlaures/.rbenv/versions/2.7.0/bin/irb:23:in `load'
	33: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
	32: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:398:in `start'
	31: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:469:in `run'
	30: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:469:in `catch'
	29: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:470:in `block in run'
	28: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:535:in `eval_input'
	27: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `each_top_level_statement'
	26: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `catch'
	25: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `block in each_top_level_statement'
	24: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `loop'
	23: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:138:in `block (2 levels) in each_top_level_statement'
	22: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:166:in `lex'
	21: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:516:in `block in eval_input'
	20: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:693:in `signal_status'
	19: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb.rb:517:in `block (2 levels) in eval_input'
	18: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/irb/input-method.rb:258:in `gets'
	17: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	16: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/forwardable.rb:235:in `readmultiline'
	15: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:170:in `readmultiline'
	14: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:232:in `inner_readline'
	13: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:232:in `loop'
	12: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:233:in `block in inner_readline'
	11: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:262:in `read_io'
	10: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:262:in `loop'
	 9: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:286:in `block in read_io'
	 8: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:234:in `block (2 levels) in inner_readline'
	 7: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:234:in `each'
	 6: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline.rb:235:in `block (3 levels) in inner_readline'
	 5: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:829:in `input_key'
	 4: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:787:in `normal_char'
	 3: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:758:in `process_key'
	 2: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/line_editor.rb:1109:in `ed_insert'
	 1: from /Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/unicode.rb:70:in `get_mbchar_width'
/Users/rlaures/.rbenv/versions/2.7.0/lib/ruby/2.7.0/reline/unicode.rb:70:in `encode': "\\xCF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
rlaures@Chacana i2tm % irb
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin15]"
irb(main):002:0> IRB::VERSION
=> "1.2.1"
irb(main):003:0> Reline::VERSION
=> "0.1.2"
irb(main):004:0>

So I suppose the error is coming from a rebuild of some library with brew.

I try to rebuild the 2.7.0 and check if it works back.

@ShamoX
Copy link

ShamoX commented Dec 1, 2021

It's worst that I though: This is probably of a remnant of the installation I had on a amd64 mac that came with the restauration mechanism since 2.7.0 don't compile on M1 chips.

I suggest you close that Issue until a new occurence comes with some solid ground :D

@benmoss
Copy link

benmoss commented Dec 4, 2021

I was seeing this on my irb when I had a messed up terminal from some ssh nonsense. Running reset in the shell fixed that which fixed the irb issue as well.

@tompng
Copy link
Member

tompng commented Oct 1, 2024

Fixed by ruby/reline#751

@tompng tompng closed this as completed Oct 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

5 participants