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

Bug when ctrl-c in pager #847

Open
dorianmariecom opened this issue Jan 30, 2024 · 2 comments
Open

Bug when ctrl-c in pager #847

dorianmariecom opened this issue Jan 30, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@dorianmariecom
Copy link

Description

I was paging through a large array and hit ctrl-c.

I was expecting to go back to the irb session.

I got an error

Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:36:in `kill': No such process (Errno::ESRCH)
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:36:in `rescue in page'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:20:in `page'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:12:in `page_content'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1357:in `output_value'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1013:in `block (2 levels) in eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1317:in `signal_status'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:998:in `block in eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1080:in `block in each_top_level_statement'
	from <internal:kernel>:187:in `loop'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1075:in `each_top_level_statement'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:997:in `eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:984:in `block in run'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:983:in `catch'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:983:in `run'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1541:in `irb'
	from <internal:prelude>:5:in `irb'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:81:in `rescue in block in <top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:75:in `block in <top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `select'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `<top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `load'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `<main>'
/Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:897:in `raise': abort then interrupt! (IRB::Abort)
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:897:in `irb_abort'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1300:in `signal_handle'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:979:in `block in run'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:13:in `write'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:13:in `puts'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:13:in `block in page_content'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:24:in `page'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb/pager.rb:12:in `page_content'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1357:in `output_value'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1013:in `block (2 levels) in eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1317:in `signal_status'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:998:in `block in eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1080:in `block in each_top_level_statement'
	from <internal:kernel>:187:in `loop'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1075:in `each_top_level_statement'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:997:in `eval_input'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:984:in `block in run'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:983:in `catch'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:983:in `run'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/lib/irb.rb:1541:in `irb'
	from <internal:prelude>:5:in `irb'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:81:in `rescue in block in <top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:75:in `block in <top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `select'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `<top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `load'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `<main>'
/Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:78:in `block in <top (required)>': invalid byte sequence in UTF-8 (ArgumentError)
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `select'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/lib/ruby/gems/3.3.0/gems/dorian-pretty-0.1.0/bin/pretty:74:in `<top (required)>'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `load'
	from /Users/dorianmariefr/.asdf/installs/ruby/3.3.0/bin/pretty:25:in `<main>'
Maybe IRB bug!

Result of irb_info

Ruby version: 3.3.0
IRB version: irb 1.11.1 (2024-01-08)
InputMethod: RelineInputMethod with Reline 0.4.2
Completion: Autocomplete, RegexpCompletor
.irbrc path: /Users/dorianmariefr/.irbrc
RUBY_PLATFORM: arm64-darwin23
East Asian Ambiguous Width: 1

Terminal Emulator

Terminal.app in macOS with fish

Setting Files

My config was commented out

@st0012 st0012 added the bug Something isn't working label Jan 31, 2024
@st0012
Copy link
Member

st0012 commented Jan 31, 2024

@dorianmariefr Thanks for reporting. Does this always happen when you Ctrl-c in a pager, or intermittently, or only when paging certain content? Asking because I can't reproduce it myself, so more information will help a lot.

@tompng
Copy link
Member

tompng commented Feb 1, 2024

Reproduced by

irb(main):001> 20000.times.to_a

then type \C-c and q

with PAGER=less less --version #=> less 581.2 (POSIX regular expressions)
To reproduce, the output bytes passed to pager should be large enough. (>= 72*1024+1 bytes in my environment)
Maybe related to pager's read buffer size, I guess.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Development

No branches or pull requests

3 participants