Skip to content

ThreadError when changing window size #282

@pocke

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions