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

ruby "irb" repl segfaults with libedit readline replacement #571

Open
rofl0r opened this issue Jan 27, 2018 · 0 comments
Open

ruby "irb" repl segfaults with libedit readline replacement #571

rofl0r opened this issue Jan 27, 2018 · 0 comments

Comments

@rofl0r
Copy link
Member

rofl0r commented Jan 27, 2018

with normal sabotage readline (libedit):

$ irb
irb(main):001:0> "foo"
=> "foo"
irb(main):002:0> puts "xx"
xx
=> nil
irb(main):003:0> Math.sin(0.7)
=> 0.644217687237691
irb(main):004:0> 
/lib/ruby/2.5.0/irb.rb:647: [BUG] Segmentation fault at 0x0000000000000010
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0018 p:---- s:0087 e:000086 CFUNC  :format
c:0017 p:0151 s:0081 e:000080 BLOCK  /lib/ruby/2.5.0/irb.rb:647 [FINISH]
c:0016 p:---- s:0078 e:000077 CFUNC  :gsub!
c:0015 p:0015 s:0073 e:000072 METHOD /lib/ruby/2.5.0/irb.rb:629
c:0014 p:0089 s:0064 e:000062 BLOCK  /lib/ruby/2.5.0/irb.rb:455 [FINISH]
c:0013 p:0023 s:0053 e:000052 METHOD /lib/ruby/2.5.0/irb/ruby-lex.rb:207
c:0012 p:0010 s:0049 e:000048 BLOCK  /lib/ruby/2.5.0/irb/ruby-lex.rb:235 [FINISH]
c:0011 p:---- s:0045 e:000044 CFUNC  :loop
c:0010 p:0006 s:0041 e:000040 BLOCK  /lib/ruby/2.5.0/irb/ruby-lex.rb:232 [FINISH]
c:0009 p:---- s:0038 e:000037 CFUNC  :catch
c:0008 p:0012 s:0033 e:000032 METHOD /lib/ruby/2.5.0/irb/ruby-lex.rb:231
c:0007 p:0029 s:0029 E:001240 METHOD /lib/ruby/2.5.0/irb.rb:487
c:0006 p:0005 s:0025 e:000024 BLOCK  /lib/ruby/2.5.0/irb.rb:428 [FINISH]
c:0005 p:---- s:0022 e:000021 CFUNC  :catch
c:0004 p:0063 s:0017 E:0022c8 METHOD /lib/ruby/2.5.0/irb.rb:427
c:0003 p:0102 s:0012 e:000011 METHOD /lib/ruby/2.5.0/irb.rb:383
c:0002 p:0019 s:0006 e:000005 EVAL   /bin/irb:11 [FINISH]
c:0001 p:0000 s:0003 E:0024e0 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/bin/irb:11:in `<main>'
/lib/ruby/2.5.0/irb.rb:383:in `start'
/lib/ruby/2.5.0/irb.rb:427:in `run'
/lib/ruby/2.5.0/irb.rb:427:in `catch'
/lib/ruby/2.5.0/irb.rb:428:in `block in run'
/lib/ruby/2.5.0/irb.rb:487:in `eval_input'
/lib/ruby/2.5.0/irb/ruby-lex.rb:231:in `each_top_level_statement'
/lib/ruby/2.5.0/irb/ruby-lex.rb:231:in `catch'
/lib/ruby/2.5.0/irb/ruby-lex.rb:232:in `block in each_top_level_statement'
/lib/ruby/2.5.0/irb/ruby-lex.rb:232:in `loop'
/lib/ruby/2.5.0/irb/ruby-lex.rb:235:in `block (2 levels) in each_top_level_statement'
/lib/ruby/2.5.0/irb/ruby-lex.rb:207:in `prompt'
/lib/ruby/2.5.0/irb.rb:455:in `block in eval_input'
/lib/ruby/2.5.0/irb.rb:629:in `prompt'
/lib/ruby/2.5.0/irb.rb:629:in `gsub!'
/lib/ruby/2.5.0/irb.rb:647:in `block in prompt'
/lib/ruby/2.5.0/irb.rb:647:in `format'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f85d2c847cb RBP: 0x0000000000000004 RSP: 0x00007ffc3fb75558
 RAX: 0x0000000000000000 RBX: 0x0000000001f324d0 RCX: 0x0000000000000004
 RDX: 0x0000000001f5ff30 RDI: 0x0000000001f324d0 RSI: 0x0000000000000020
  R8: 0x0000000000000300  R9: 0x0000000000600540 R10: 0x0000000001f505b8
 R11: 0x0000000001f50568 R12: 0x0000000000000020 R13: 0xfffffffffffffff0
 R14: 0x00007f85d2eea5c8 R15: 0x00007f85d2eea2c0 EFL: 0x0000000000010283

-- Other runtime information -----------------------------------------------

* Loaded script: irb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
    5 /lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
    6 /lib/ruby/2.5.0/x86_64-linux/rbconfig.rb
    7 /lib/ruby/2.5.0/rubygems/compatibility.rb
    8 /lib/ruby/2.5.0/rubygems/defaults.rb
    9 /lib/ruby/2.5.0/rubygems/deprecate.rb
   10 /lib/ruby/2.5.0/rubygems/errors.rb
   11 /lib/ruby/2.5.0/rubygems/version.rb
   12 /lib/ruby/2.5.0/rubygems/requirement.rb
   13 /lib/ruby/2.5.0/rubygems/platform.rb
   14 /lib/ruby/2.5.0/rubygems/basic_specification.rb
   15 /lib/ruby/2.5.0/rubygems/stub_specification.rb
   16 /lib/ruby/2.5.0/rubygems/util/list.rb
   17 /lib/ruby/2.5.0/x86_64-linux/stringio.so
   18 /lib/ruby/2.5.0/rubygems/specification.rb
   19 /lib/ruby/2.5.0/rubygems/exceptions.rb
   20 /lib/ruby/2.5.0/rubygems/dependency.rb
   21 /lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
   22 /lib/ruby/2.5.0/monitor.rb
   23 /lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
   24 /lib/ruby/2.5.0/rubygems.rb
   25 /lib/ruby/2.5.0/rubygems/path_support.rb
   26 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/version.rb
   27 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/core_ext/name_error.rb
   28 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/levenshtein.rb
   29 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/jaro_winkler.rb
   30 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checker.rb
   31 /lib/ruby/2.5.0/delegate.rb
   32 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   33 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   34 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
   35 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
   36 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/key_error_checker.rb
   37 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/null_checker.rb
   38 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/formatters/plain_formatter.rb
   39 /lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean.rb
   40 /lib/ruby/2.5.0/e2mmap.rb
   41 /lib/ruby/2.5.0/irb/init.rb
   42 /lib/ruby/2.5.0/irb/workspace.rb
   43 /lib/ruby/2.5.0/irb/inspector.rb
   44 /lib/ruby/2.5.0/irb/output-method.rb
   45 /lib/ruby/2.5.0/irb/context.rb
   46 /lib/ruby/2.5.0/irb/extend-command.rb
   47 /lib/ruby/2.5.0/irb/notifier.rb
   48 /lib/ruby/2.5.0/irb/slex.rb
   49 /lib/ruby/2.5.0/irb/ruby-token.rb
   50 /lib/ruby/2.5.0/irb/ruby-lex.rb
   51 /lib/ruby/2.5.0/irb/src_encoding.rb
   52 /lib/ruby/2.5.0/irb/magic-file.rb
   53 /lib/ruby/2.5.0/x86_64-linux/readline.so
   54 /lib/ruby/2.5.0/irb/input-method.rb
   55 /lib/ruby/2.5.0/irb/locale.rb
   56 /lib/ruby/2.5.0/irb.rb

* Process memory map:

00400000-00401000 r-xp 00000000 08:11 93776877                           /opt/ruby/bin/ruby
00600000-00601000 rw-p 00000000 08:11 93776877                           /opt/ruby/bin/ruby
01afd000-020ab000 rw-p 00000000 00:00 0                                  [heap]
7f85d1bab000-7f85d1dba000 r-xp 00000000 08:11 90136520                   /opt/curses/lib/libterminfo.so
7f85d1dba000-7f85d1dbb000 rw-p 0000f000 08:11 90136520                   /opt/curses/lib/libterminfo.so
7f85d1dbb000-7f85d1dbd000 rw-p 00000000 00:00 0 
7f85d1dbd000-7f85d1fe1000 r-xp 00000000 08:11 90143789                   /opt/libedit/lib/libedit.so.0.0.56
7f85d1fe1000-7f85d1fe3000 rw-p 00024000 08:11 90143789                   /opt/libedit/lib/libedit.so.0.0.56
7f85d1fe3000-7f85d1fe7000 rw-p 00000000 00:00 0 
7f85d1fe7000-7f85d21ed000 r-xp 00000000 08:11 93777588                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/readline.so
7f85d21ed000-7f85d21ee000 rw-p 00006000 08:11 93777588                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/readline.so
7f85d21ee000-7f85d23f4000 r-xp 00000000 08:11 93777578                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/stringio.so
7f85d23f4000-7f85d23f5000 rw-p 00006000 08:11 93777578                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/stringio.so
7f85d23f5000-7f85d25f7000 r-xp 00000000 08:11 93777614                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7f85d25f7000-7f85d25f8000 rw-p 00002000 08:11 93777614                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/enc/trans/transdb.so
7f85d25f8000-7f85d27f9000 r-xp 00000000 08:11 93777598                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7f85d27f9000-7f85d27fa000 rw-p 00001000 08:11 93777598                   /opt/ruby/lib/ruby/2.5.0/x86_64-linux/enc/encdb.so
7f85d27fa000-7f85d2c4a000 r-xp 00000000 08:11 93776878                   /opt/ruby/lib/libruby.so.2.5.0
7f85d2c4a000-7f85d2c52000 rw-p 00250000 08:11 93776878                   /opt/ruby/lib/libruby.so.2.5.0
7f85d2c52000-7f85d2c61000 rw-p 00000000 00:00 0 
7f85d2c61000-7f85d2cea000 r-xp 00000000 08:11 90110774                   /opt/musl/lib/libc.so
7f85d2de2000-7f85d2de3000 ---p 00000000 00:00 0 
7f85d2de3000-7f85d2ee9000 rw-p 00000000 00:00 0 
7f85d2ee9000-7f85d2eea000 rw-p 00088000 08:11 90110774                   /opt/musl/lib/libc.so
7f85d2eea000-7f85d2eed000 rw-p 00000000 00:00 0 
7ffc3fb59000-7ffc3fb7a000 rw-p 00000000 00:00 0                          [stack]
7ffc3fb95000-7ffc3fb97000 r--p 00000000 00:00 0                          [vvar]
7ffc3fb97000-7ffc3fb99000 r-xp 00000000 00:00 0                          [vdso]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

root:/$ butch rm libedit
libedit: removed.
root:/$ butch rebuild gnu-readline
*** downloadqueue ***
gnu-readline
*** buildqueue ***
gnu-readline
2018-01-27 22:06:13 downloading gnu-readline (/src/build/dl_gnu-readline.sh) -> /src/logs/dl_gnu-readline.log
2018-01-27 22:06:13 building gnu-readline (/src/build/build_gnu-readline.sh) -> /src/logs/build_gnu-readline.log
2018-01-27 22:06:16 done.
got 0 download errors and 0 build errors.
time spent: 00:00:03
root:/$ butch rebuild ruby
package libz is already installed, skipping
package zlib is already installed, skipping
package libressl is already installed, skipping
package gdbm is already installed, skipping
*** downloadqueue ***
ruby
*** buildqueue ***
ruby
2018-01-27 22:06:23 downloading ruby (/src/build/dl_ruby.sh) -> /src/logs/dl_ruby.log
2018-01-27 22:06:23 building ruby (/src/build/build_ruby.sh) -> /src/logs/build_ruby.log
2018-01-27 22:07:00 done.
got 0 download errors and 0 build errors.
time spent: 00:00:37
root:/$ irb
irb(main):001:0> "foo"
=> "foo"
irb(main):002:0> puts "xx"
xx
=> nil
irb(main):003:0> Math.sin(0.7)
=> 0.644217687237691
irb(main):004:0> 
irb(main):005:0> 
irb(main):006:0> 
irb(main):007:0> 
irb(main):008:0> 
irb(main):009:0> 
irb(main):010:0> 
irb(main):011:0> 
irb(main):012:0> 
irb(main):013:0> 
irb(main):014:0> 
irb(main):015:0> 
irb(main):016:0> 
irb(main):017:0> 

it should be investigated what causes the issue, since all other packages in sabotage use libedit, and they probably need all to be recompiled against gnu-readline to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant