Skip to content

ThreadError when changing window size #282

Description

@pocke

Description

IRB displays ThreadError when changing the window size unexpectedly.

Reproduce

  1. Start IRB with irb command
  2. Change the terminal emulator size
    • It happens only when I make the window's width wider. No error when making it tight, or changing height.
  3. It displays the following error
irb(main):001:0> <internal:/home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:40:in `enter': can't be called from trap context (ThreadError)
	from <internal:/home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:40:in `require'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/input-method.rb:320:in `block in <class:ReidlineInputMethod>'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:545:in `instance_exec'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:545:in `call'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:578:in `call'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:605:in `render_each_dialog'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:590:in `block in render_dialog'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:589:in `each'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:589:in `render_dialog'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:467:in `rerender'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/line_editor.rb:180:in `block in reset'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/ansi.rb:129:in `getbyte'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/ansi.rb:129:in `raw'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/ansi.rb:129:in `inner_getc'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline/ansi.rb:176:in `getc'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:354:in `block in read_io'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:353:in `loop'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:353:in `read_io'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:311:in `block in inner_readline'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:309:in `loop'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:309:in `inner_readline'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/reline.rb:239:in `readmultiline'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/forwardable.rb:238:in `readmultiline'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/forwardable.rb:238:in `readmultiline'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/input-method.rb:390:in `gets'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:532:in `block (2 levels) in eval_input'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:761:in `signal_status'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:531:in `block in eval_input'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:282:in `lex'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:251:in `block (2 levels) in each_top_level_statement'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:248:in `loop'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:248:in `block in each_top_level_statement'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:247:in `catch'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb/ruby-lex.rb:247:in `each_top_level_statement'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:550:in `eval_input'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:484:in `block in run'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:483:in `catch'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:483:in `run'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/3.1.0/irb.rb:412:in `start'
	from /home/pocke/.rbenv/versions/trunk/lib/ruby/gems/3.1.0/gems/irb-1.3.8.pre.7/exe/irb:11:in `<top (required)>'
	from /home/pocke/.rbenv/versions/trunk/bin/irb:25:in `load'
	from /home/pocke/.rbenv/versions/trunk/bin/irb:25:in `<main>'

Result of irb_info

irb(main):001:0> irb_info
=> 
Ruby version: 3.1.0                            
IRB version: irb 1.3.8.pre.7 (2021-09-04)      
InputMethod: ReidlineInputMethod with Reline 0.2.8.pre.7
.irbrc path: /home/pocke/.irbrc                
RUBY_PLATFORM: x86_64-linux                    
LANG env: en_GB.UTF-8   

Terminal Emulator

I reproduced it with Sakura and xterm on Arch Linux, with and without tmux.

Setting Files

I reproduced it with and without ~/.irbrc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions