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

Segfault in FFI::Struct#[] after GC.compact #742

Closed
larskanis opened this issue Feb 1, 2020 · 1 comment
Closed

Segfault in FFI::Struct#[] after GC.compact #742

larskanis opened this issue Feb 1, 2020 · 1 comment

Comments

@larskanis
Copy link
Member

Original issue: cotag/http-parser#3 (comment)

I was able to trigger the segfault once with ffi-1.12.1. Unfortunately I didn't find a way to reproduce it reliably.

irb input and backtrace
lars@isa:~/comcard/ffi$  git:(master) 3M 12A irb -rirb -rpp -rffi
2.7.0 :001 > ^C
2.7.0 :001 > def new_settings
2.7.0 :002 >   settings = Class.new(FFI::Struct) do
2.7.0 :003 >     layout  :on_message_begin,    :ushort,
2.7.0 :004 >     :on_url,              :ushort,
2.7.0 :005 >     :on_status,           :ushort,
2.7.0 :006 >     :on_header_field,     :ushort,
2.7.0 :007 >     :on_header_value,     :ushort,
2.7.0 :008 >     :on_headers_complete, :ushort,
        2: from (irb):15:in `times'
        1: from (irb):15:in `block in irb_binding'
NameError (undefined local variable or method `a' for main:Object)
2.7.0 :017 > a=[]
2.7.0 :018 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>146,
 :T_CLASS=>184,
 :T_MODULE=>9,
 :T_FLOAT=>0,
 :T_STRING=>3912,
 :T_REGEXP=>50,
 :T_ARRAY=>473,
 :T_HASH=>36,
 :T_STRUCT=>5,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>32,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 :T_SYMBOL=>1,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>2465,
 :T_NODE=>0,
 :T_ICLASS=>18,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>146, :T_CLASS=>184, :T_MODULE=>9, :T_FLOAT=>0, :T_STRING=>3912, :T_REGEXP=>50, :T_ARRAY=>473, :T_HASH=>36, :T_STRUCT=>5, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>32, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>1, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>2465, :T_NODE=>0, :T_ICLASS=>18, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :019 > s=new_settings.new
2.7.0 :020 > s[:on_body]
 => 0
2.7.0 :021 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>249,
 :T_CLASS=>70,
 :T_MODULE=>9,
 :T_FLOAT=>0,
 :T_STRING=>8207,
 :T_REGEXP=>50,
 :T_ARRAY=>439,
 :T_HASH=>26,
 :T_STRUCT=>5,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>7,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_FALSE=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>1385,
 :T_NODE=>0,
 :T_ICLASS=>9,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>249, :T_CLASS=>70, :T_MODULE=>9, :T_FLOAT=>0, :T_STRING=>8207, :T_REGEXP=>50, :T_ARRAY=>439, :T_HASH=>26, :T_STRUCT=>5, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>7, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>1385, :T_NODE=>0, :T_ICLASS=>9, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :022 > s[:on_body]
 => 0
2.7.0 :023 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>0,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>5733,
 :T_REGEXP=>0,
 :T_ARRAY=>53,
 :T_HASH=>0,
 :T_STRUCT=>26,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>0,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 :T_SYMBOL=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>0, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>5733, :T_REGEXP=>0, :T_ARRAY=>53, :T_HASH=>0, :T_STRUCT=>26, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>0, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :024 > s[:on_body]
 => 0
2.7.0 :025 > s=new_settings.new
2.7.0 :026 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>11,
 :T_CLASS=>90,
 :T_MODULE=>7,
 :T_FLOAT=>0,
 :T_STRING=>17750,
 :T_REGEXP=>18,
 :T_ARRAY=>99,
 :T_HASH=>8,
 :T_STRUCT=>1,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>11,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_SYMBOL=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>1283,
 :T_NODE=>0,
 :T_ICLASS=>11,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>11, :T_CLASS=>90, :T_MODULE=>7, :T_FLOAT=>0, :T_STRING=>17750, :T_REGEXP=>18, :T_ARRAY=>99, :T_HASH=>8, :T_STRUCT=>1, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>11, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>1283, :T_NODE=>0, :T_ICLASS=>11, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :027 > s[:on_body]
 => 0
2.7.0 :028 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>0,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>5322,
 :T_REGEXP=>0,
 :T_ARRAY=>0,
 :T_HASH=>0,
 :T_STRUCT=>0,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>0,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 23=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>0, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>5322, :T_REGEXP=>0, :T_ARRAY=>0, :T_HASH=>0, :T_STRUCT=>0, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>0, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :029 > s=new_settings.new
2.7.0 :030 > s[:on_body]
 => 0
2.7.0 :031 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>249,
 :T_CLASS=>54,
 :T_MODULE=>8,
 :T_FLOAT=>0,
 :T_STRING=>27545,
 :T_REGEXP=>50,
 :T_ARRAY=>411,
 :T_HASH=>24,
 :T_STRUCT=>5,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>2,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 :T_FALSE=>0,
 :T_SYMBOL=>0,
 :T_UNDEF=>0,
 25=>0,
 :T_NODE=>0,
 :T_ICLASS=>6,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>249, :T_CLASS=>54, :T_MODULE=>8, :T_FLOAT=>0, :T_STRING=>27545, :T_REGEXP=>50, :T_ARRAY=>411, :T_HASH=>24, :T_STRUCT=>5, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>2, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>1037, :T_NODE=>0, :T_ICLASS=>6, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :032 > s=new_settings.new
2.7.0 :033 > s=new_settings.new
2.7.0 :034 > s=new_settings.new
2.7.0 :035 > s[:on_body]
 => 0
2.7.0 :036 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>0,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>8529,
 :T_REGEXP=>0,
 :T_ARRAY=>0,
 :T_HASH=>0,
 :T_STRUCT=>0,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>0,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 :T_FALSE=>0,
 :T_SYMBOL=>0,
 :T_UNDEF=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>0, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>8529, :T_REGEXP=>0, :T_ARRAY=>0, :T_HASH=>0, :T_STRUCT=>0, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>0, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :037 > s[:on_body]
 => 0
2.7.0 :038 > s=new_settings.new
2.7.0 :039 > s[:on_body]
 => 0
2.7.0 :040 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>0,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>10385,
 :T_REGEXP=>0,
 :T_ARRAY=>53,
 :T_HASH=>2,
 :T_STRUCT=>26,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>0,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_SYMBOL=>0,
 :T_FIXNUM=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>0, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>10385, :T_REGEXP=>0, :T_ARRAY=>53, :T_HASH=>2, :T_STRUCT=>26, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>0, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :041 > s[:on_body]
 => 0
2.7.0 :042 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>0,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>9997,
 :T_REGEXP=>0,
 :T_ARRAY=>55,
 :T_HASH=>2,
 :T_STRUCT=>26,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>0,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_TRUE=>0,
 :T_FALSE=>0,
 :T_SYMBOL=>0,
 :T_FIXNUM=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>0, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>9997, :T_REGEXP=>0, :T_ARRAY=>55, :T_HASH=>2, :T_STRUCT=>26, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>0, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :043 > s=new_settings.new
2.7.0 :044 > 10000.times{ a<<"x".dup }; pp GC.verify_compaction_references[:moved]
{:T_NONE=>0,
 :T_OBJECT=>0,
 :T_CLASS=>2,
 :T_MODULE=>0,
 :T_FLOAT=>0,
 :T_STRING=>10481,
 :T_REGEXP=>0,
 :T_ARRAY=>54,
 :T_HASH=>2,
 :T_STRUCT=>26,
 :T_BIGNUM=>0,
 :T_FILE=>0,
 :T_DATA=>10,
 :T_MATCH=>0,
 :T_COMPLEX=>0,
 :T_RATIONAL=>0,
 16=>0,
 :T_NIL=>0,
 :T_TRUE=>0,
 :T_FALSE=>0,
 :T_SYMBOL=>0,
 :T_FIXNUM=>0,
 :T_UNDEF=>0,
 23=>0,
 24=>0,
 25=>0,
 :T_IMEMO=>0,
 :T_NODE=>0,
 :T_ICLASS=>0,
 :T_ZOMBIE=>0,
 :T_MOVED=>0}
 => {:T_NONE=>0, :T_OBJECT=>0, :T_CLASS=>2, :T_MODULE=>0, :T_FLOAT=>0, :T_STRING=>10481, :T_REGEXP=>0, :T_ARRAY=>54, :T_HASH=>2, :T_STRUCT=>26, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>10, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>0, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>0, :T_NODE=>0, :T_ICLASS=>0, :T_ZOMBIE=>0, :T_MOVED=>0}
2.7.0 :045 > s[:on_body]
(irb):45: [BUG] Segmentation fault at 0x0000000000000028
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0022 p:---- s:0107 e:000106 CFUNC  :[]
c:0021 p:0006 s:0102 e:000101 EVAL   (irb):45 [FINISH]
c:0020 p:---- s:0099 e:000098 CFUNC  :eval
c:0019 p:0020 s:0091 e:000090 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/workspace.rb:114
c:0018 p:0059 s:0083 e:000081 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/context.rb:419
c:0017 p:0033 s:0074 e:000073 BLOCK  /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:539
c:0016 p:0024 s:0071 e:000070 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:693
c:0015 p:0007 s:0065 e:000064 BLOCK  /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:536
c:0014 p:0114 s:0060 e:000059 BLOCK  /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:150 [FINISH]
c:0013 p:---- s:0056 e:000055 CFUNC  :loop
c:0012 p:0005 s:0052 e:000051 BLOCK  /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135 [FINISH]
c:0011 p:---- s:0049 e:000048 CFUNC  :catch
c:0010 p:0010 s:0044 e:000043 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134
c:0009 p:0046 s:0040 E:0013a8 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:535
c:0008 p:0004 s:0035 e:000034 BLOCK  /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:470 [FINISH]
c:0007 p:---- s:0032 e:000031 CFUNC  :catch
c:0006 p:0057 s:0027 E:001de8 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:469
c:0005 p:0104 s:0022 e:000021 METHOD /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:398
c:0004 p:0019 s:0016 e:000015 TOP    /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11 [FINISH]
c:0003 p:---- s:0013 e:000012 CFUNC  :load
c:0002 p:0112 s:0008 E:000a30 EVAL   /home/lars/.rvm/rubies/ruby-2.7.0/bin/irb:23 [FINISH]
c:0001 p:0000 s:0003 E:0021f0 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/home/lars/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `<main>'
/home/lars/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `load'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:398:in `start'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:469:in `run'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:469:in `catch'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:470:in `block in run'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:535:in `eval_input'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `each_top_level_statement'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:134:in `catch'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `block in each_top_level_statement'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:135:in `loop'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `block (2 levels) in each_top_level_statement'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:536:in `block in eval_input'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:693:in `signal_status'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb:539:in `block (2 levels) in eval_input'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/context.rb:419:in `evaluate'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/workspace.rb:114:in `evaluate'
/home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/workspace.rb:114:in `eval'
(irb):45:in `irb_binding'
(irb):45:in `[]'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f102e8ce0b3 RBP: 0x00005624fffc43f0 RSP: 0x00007ffeeb2e88d0
 RAX: 0x0000000000000001 RBX: 0x00005624ffae75c0 RCX: 0x0000000000000002
 RDX: 0x00005624ffccb3d0 RDI: 0x0000000000000000 RSI: 0x0000000001b0f10c
  R8: 0x00005624ffae0360  R9: 0x000000000000001f R10: 0x0000000055550083
 R11: 0x0000000000000000 R12: 0x0000000001b0f10c R13: 0x00005624fffc42e0
 R14: 0x00005624ffae75c0 R15: 0x00005624ff16e200 EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_vm_bugreport+0x573) [0x7f1032c66a73] vm_dump.c:755
[0x7f1032a89dab]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(sigsegv+0x4d) [0x7f1032bc37cd] signal.c:946
/lib/x86_64-linux-gnu/libc.so.6(0x7f10327e5470) [0x7f10327e5470]
/home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so(struct_aref+0x73) [0x7f102e8ce0b3] Struct.c:317
[0x7f1032c3eb00]
[0x7f1032c53ffb]
[0x7f1032c4c20b]
[0x7f1032c52374]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_f_eval+0x179) [0x7f1032c55459] vm_eval.c:1646
[0x7f1032c3eb00]
[0x7f1032c4c20b]
[0x7f1032c52b64]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(loop_i+0x2f7) [0x7f1032c55b57] vm.c:1044
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_vrescue2+0xe4) [0x7f1032a91c34] eval.c:989
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_rescue2+0x8e) [0x7f1032a91e4e] eval.c:966
[0x7f1032c3eb00]
[0x7f1032c53ffb]
[0x7f1032c4c2d1]
[0x7f1032c52374]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(catch_i+0x2eb) [0x7f1032c5666b] vm.c:1044
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(vm_catch_protect+0xba) [0x7f1032c44d9a] vm_eval.c:2308
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_catch_obj+0x30) [0x7f1032c44eb0] vm_eval.c:2334
[0x7f1032c3eb00]
[0x7f1032c53ffb]
[0x7f1032c4c2d1]
[0x7f1032c52374]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(catch_i+0x2eb) [0x7f1032c5666b] vm.c:1044
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(vm_catch_protect+0xba) [0x7f1032c44d9a] vm_eval.c:2308
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_catch_obj+0x30) [0x7f1032c44eb0] vm_eval.c:2334
[0x7f1032c3eb00]
[0x7f1032c53ffb]
[0x7f1032c4c2d1]
[0x7f1032c52b64]
[0x7f1032aea413]
[0x7f1032c3eb00]
[0x7f1032c53ffb]
[0x7f1032c4c20b]
[0x7f1032c52b64]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_ec_exec_node+0xc1) [0x7f1032a8e8e1] eval.c:277
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(ruby_run_node+0x4e) [0x7f1032a941fe] eval.c:335
/home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby(main+0x5f) [0x5624fc7f417f] ./main.c:50

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

* Loaded script: irb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 ruby2_keywords.rb
    5 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
    6 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
    7 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/rbconfig.rb
    8 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/compatibility.rb
    9 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/defaults.rb
   10 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/deprecate.rb
   11 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/errors.rb
   12 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/version.rb
   13 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/requirement.rb
   14 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/platform.rb
   15 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/basic_specification.rb
   16 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/stub_specification.rb
   17 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/util.rb
   18 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/text.rb
   19 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/user_interaction.rb
   20 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/specification_policy.rb
   21 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/util/list.rb
   22 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/specification.rb
   23 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/exceptions.rb
   24 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/bundler_version_finder.rb
   25 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/dependency.rb
   26 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_gem.rb
   27 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
   28 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/monitor.rb
   29 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb
   30 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_warn.rb
   31 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems.rb
   32 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/path_support.rb
   33 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/version.rb
   34 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/core_ext/name_error.rb
   35 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/levenshtein.rb
   36 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/jaro_winkler.rb
   37 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checker.rb
   38 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   39 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   40 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers.rb
   41 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/method_name_checker.rb
   42 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/key_error_checker.rb
   43 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/null_checker.rb
   44 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/formatters/plain_formatter.rb
   45 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean/tree_spell_checker.rb
   46 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/did_you_mean.rb
   47 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/tsort.rb
   48 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/request_set/gem_dependency_api.rb
   49 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/request_set/lockfile/parser.rb
   50 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/request_set/lockfile/tokenizer.rb
   51 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/request_set/lockfile.rb
   52 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/request_set.rb
   53 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb
   54 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/errors.rb
   55 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/set.rb
   56 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb
   57 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
   58 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
   59 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
   60 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
   61 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb
   62 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb
   63 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb
   64 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb
   65 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb
   66 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/state.rb
   67 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb
   68 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
   69 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb
   70 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
   71 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/resolver.rb
   72 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
   73 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo/lib/molinillo.rb
   74 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/molinillo.rb
   75 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/activation_request.rb
   76 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/conflict.rb
   77 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/dependency_request.rb
   78 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/requirement_list.rb
   79 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/stats.rb
   80 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/set.rb
   81 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/api_set.rb
   82 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/composed_set.rb
   83 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/best_set.rb
   84 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/current_set.rb
   85 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/git_set.rb
   86 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/index_set.rb
   87 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/installer_set.rb
   88 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/lock_set.rb
   89 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/vendor_set.rb
   90 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/source_set.rb
   91 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/specification.rb
   92 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/spec_specification.rb
   93 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/api_specification.rb
   94 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/git_specification.rb
   95 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/index_specification.rb
   96 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/installed_specification.rb
   97 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/local_specification.rb
   98 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/lock_specification.rb
   99 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver/vendor_specification.rb
  100 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/resolver.rb
  101 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/version.rb
  102 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/rfc2396_parser.rb
  103 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/rfc3986_parser.rb
  104 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/common.rb
  105 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/generic.rb
  106 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/file.rb
  107 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/ftp.rb
  108 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/http.rb
  109 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/https.rb
  110 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/ldap.rb
  111 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/ldaps.rb
  112 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri/mailto.rb
  113 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/uri.rb
  114 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/git.rb
  115 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/installed.rb
  116 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/specific_file.rb
  117 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/local.rb
  118 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/lock.rb
  119 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source/vendor.rb
  120 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/source.rb
  121 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
  122 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/ripper/core.rb
  123 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/ripper/lexer.rb
  124 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/ripper/filter.rb
  125 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/ripper/sexp.rb
  126 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/ripper.rb
  127 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/init.rb
  128 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/delegate.rb
  129 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/workspace.rb
  130 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/inspector.rb
  131 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/src_encoding.rb
  132 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/magic-file.rb
  133 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
  134 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/readline.rb
  135 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/completion.rb
  136 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
  137 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/timeout.rb
  138 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/forwardable/impl.rb
  139 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/forwardable/version.rb
  140 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/forwardable.rb
  141 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/version.rb
  142 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
  143 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/pathname.rb
  144 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/config.rb
  145 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_actor/base.rb
  146 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_actor/emacs.rb
  147 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_actor/vi_command.rb
  148 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_actor/vi_insert.rb
  149 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_actor.rb
  150 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/key_stroke.rb
  151 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/kill_ring.rb
  152 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/unicode/east_asian_width.rb
  153 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/unicode.rb
  154 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/fileutils.rb
  155 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
  156 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/tmpdir.rb
  157 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/tempfile.rb
  158 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/line_editor.rb
  159 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/history.rb
  160 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/ansi.rb
  161 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline/general_io.rb
  162 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/reline.rb
  163 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/input-method.rb
  164 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/output-method.rb
  165 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/context.rb
  166 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/extend-command.rb
  167 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ruby-lex.rb
  168 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/locale.rb
  169 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/color.rb
  170 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/version.rb
  171 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb.rb
  172 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/irb/ext/save-history.rb
  173 /home/lars/.rvm/scripts/irbrc.rb
  174 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/prettyprint.rb
  175 /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/pp.rb
  176 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
  177 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/platform.rb
  178 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/data_converter.rb
  179 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/types.rb
  180 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/library.rb
  181 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/errno.rb
  182 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/pointer.rb
  183 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/memorypointer.rb
  184 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/struct_layout.rb
  185 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/struct_layout_builder.rb
  186 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/struct_by_reference.rb
  187 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/struct.rb
  188 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/union.rb
  189 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/managedstruct.rb
  190 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/callback.rb
  191 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/io.rb
  192 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/autopointer.rb
  193 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/variadic.rb
  194 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/enum.rb
  195 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/version.rb
  196 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi/ffi.rb
  197 /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi.rb

* Process memory map:

5624fc7f3000-5624fc7f4000 r--p 00000000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
5624fc7f4000-5624fc7f5000 r-xp 00001000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
5624fc7f5000-5624fc7f6000 r--p 00002000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
5624fc7f6000-5624fc7f7000 r--p 00002000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
5624fc7f7000-5624fc7f8000 rw-p 00003000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
5624fe6f6000-5625002d8000 rw-p 00000000 00:00 0                          [heap]
7f1026f57000-7f1028000000 r--s 00000000 08:01 27920545                   /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.30.so
7f1028000000-7f1028021000 rw-p 00000000 00:00 0
7f1028021000-7f102c000000 ---p 00000000 00:00 0
7f102ce56000-7f102d045000 r--s 00000000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f102d045000-7f102db20000 rw-p 00000000 00:00 0
7f102db20000-7f102e515000 r--s 00000000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f102e515000-7f102e60f000 rw-p 00000000 00:00 0
7f102e641000-7f102e672000 r--s 00000000 08:14 43391781                   /home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby
7f102e672000-7f102e675000 r--p 00000000 08:01 14417976                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f102e675000-7f102e686000 r-xp 00003000 08:01 14417976                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f102e686000-7f102e68a000 r--p 00014000 08:01 14417976                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f102e68a000-7f102e68b000 r--p 00017000 08:01 14417976                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f102e68b000-7f102e68c000 rw-p 00018000 08:01 14417976                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f102e6b6000-7f102e6b7000 ---p 00000000 00:00 0
7f102e6b7000-7f102e8b7000 rw-p 00000000 00:00 0
7f102e8b7000-7f102e8bc000 r--p 00000000 08:14 48132119                   /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
7f102e8bc000-7f102e8d4000 r-xp 00005000 08:14 48132119                   /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
7f102e8d4000-7f102e8db000 r--p 0001d000 08:14 48132119                   /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
7f102e8db000-7f102e8dc000 r--p 00023000 08:14 48132119                   /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
7f102e8dc000-7f102e8dd000 rw-p 00024000 08:14 48132119                   /home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so
7f102e8dd000-7f102e8eb000 r--p 00000000 08:01 14418105                   /lib/x86_64-linux-gnu/libtinfo.so.6.1
7f102e8eb000-7f102e8fa000 r-xp 0000e000 08:01 14418105                   /lib/x86_64-linux-gnu/libtinfo.so.6.1
7f102e8fa000-7f102e908000 r--p 0001d000 08:01 14418105                   /lib/x86_64-linux-gnu/libtinfo.so.6.1
7f102e908000-7f102e90c000 r--p 0002a000 08:01 14418105                   /lib/x86_64-linux-gnu/libtinfo.so.6.1
7f102e90c000-7f102e90d000 rw-p 0002e000 08:01 14418105                   /lib/x86_64-linux-gnu/libtinfo.so.6.1
7f102e90d000-7f102e921000 r--p 00000000 08:01 14418815                   /lib/x86_64-linux-gnu/libreadline.so.8.0
7f102e921000-7f102e94a000 r-xp 00014000 08:01 14418815                   /lib/x86_64-linux-gnu/libreadline.so.8.0
7f102e94a000-7f102e954000 r--p 0003d000 08:01 14418815                   /lib/x86_64-linux-gnu/libreadline.so.8.0
7f102e954000-7f102e956000 r--p 00046000 08:01 14418815                   /lib/x86_64-linux-gnu/libreadline.so.8.0
7f102e956000-7f102e95c000 rw-p 00048000 08:01 14418815                   /lib/x86_64-linux-gnu/libreadline.so.8.0
7f102e95c000-7f102e95d000 rw-p 00000000 00:00 0
7f102e968000-7f102e96a000 r--p 00000000 08:01 27920672                   /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f102e96a000-7f102e96f000 r-xp 00002000 08:01 27920672                   /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f102e96f000-7f102e970000 r--p 00007000 08:01 27920672                   /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f102e970000-7f102e971000 r--p 00007000 08:01 27920672                   /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f102e971000-7f102e972000 rw-p 00008000 08:01 27920672                   /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f102e972000-7f102e974000 r--p 00000000 08:14 43391891                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
7f102e974000-7f102e977000 r-xp 00002000 08:14 43391891                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
7f102e977000-7f102e979000 r--p 00005000 08:14 43391891                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
7f102e979000-7f102e97a000 r--p 00006000 08:14 43391891                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
7f102e97a000-7f102e97b000 rw-p 00007000 08:14 43391891                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/etc.so
7f102e97b000-7f102e97d000 r--p 00000000 08:14 43391801                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
7f102e97d000-7f102e983000 r-xp 00002000 08:14 43391801                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
7f102e983000-7f102e985000 r--p 00008000 08:14 43391801                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
7f102e985000-7f102e986000 r--p 00009000 08:14 43391801                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
7f102e986000-7f102e987000 rw-p 0000a000 08:14 43391801                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/pathname.so
7f102e987000-7f102e98d000 r--p 00000000 08:14 43391800                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
7f102e98d000-7f102e9b1000 r-xp 00006000 08:14 43391800                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
7f102e9b1000-7f102e9c8000 r--p 0002a000 08:14 43391800                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
7f102e9c8000-7f102e9ca000 r--p 00040000 08:14 43391800                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
7f102e9ca000-7f102e9cb000 rw-p 00042000 08:14 43391800                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/ripper.so
7f102e9cb000-7f102ea2d000 rw-p 00000000 00:00 0
7f102ea2d000-7f102ea2e000 ---p 00000000 00:00 0
7f102ea2e000-7f102eacf000 rw-p 00000000 00:00 0
7f102eacf000-7f102ead0000 ---p 00000000 00:00 0
7f102ead0000-7f102eb71000 rw-p 00000000 00:00 0
7f102eb71000-7f102eb72000 ---p 00000000 00:00 0
7f102eb72000-7f102ec13000 rw-p 00000000 00:00 0
7f102ec13000-7f102ec14000 ---p 00000000 00:00 0
7f102ec14000-7f102ecb5000 rw-p 00000000 00:00 0
7f102ecb5000-7f102ecb6000 ---p 00000000 00:00 0
7f102ecb6000-7f102ed57000 rw-p 00000000 00:00 0
7f102ed57000-7f102ed58000 ---p 00000000 00:00 0
7f102ed58000-7f102edf9000 rw-p 00000000 00:00 0
7f102edf9000-7f102edfa000 ---p 00000000 00:00 0
7f102edfa000-7f102ee9b000 rw-p 00000000 00:00 0
7f102ee9b000-7f102ee9c000 ---p 00000000 00:00 0
7f102ee9c000-7f102ef3d000 rw-p 00000000 00:00 0
7f102ef3d000-7f102ef3e000 ---p 00000000 00:00 0
7f102ef3e000-7f102efdf000 rw-p 00000000 00:00 0
7f102efdf000-7f102efe0000 ---p 00000000 00:00 0
7f102efe0000-7f102f081000 rw-p 00000000 00:00 0
7f102f081000-7f102f082000 ---p 00000000 00:00 0
7f102f082000-7f102f123000 rw-p 00000000 00:00 0
7f102f123000-7f102f124000 ---p 00000000 00:00 0
7f102f124000-7f102f1c5000 rw-p 00000000 00:00 0
7f102f1c5000-7f102f1c6000 ---p 00000000 00:00 0
7f102f1c6000-7f102f267000 rw-p 00000000 00:00 0
7f102f267000-7f102f268000 ---p 00000000 00:00 0
7f102f268000-7f102f309000 rw-p 00000000 00:00 0
7f102f309000-7f102f30a000 ---p 00000000 00:00 0
7f102f30a000-7f102f3ab000 rw-p 00000000 00:00 0
7f102f3ab000-7f102f3ac000 ---p 00000000 00:00 0
7f102f3ac000-7f102f44d000 rw-p 00000000 00:00 0
7f102f44d000-7f102f44e000 ---p 00000000 00:00 0
7f102f44e000-7f102f4ef000 rw-p 00000000 00:00 0
7f102f4ef000-7f102f4f0000 ---p 00000000 00:00 0
7f102f4f0000-7f102f591000 rw-p 00000000 00:00 0
7f102f591000-7f102f592000 ---p 00000000 00:00 0
7f102f592000-7f102f633000 rw-p 00000000 00:00 0
7f102f633000-7f102f634000 ---p 00000000 00:00 0
7f102f634000-7f102f6d5000 rw-p 00000000 00:00 0
7f102f6d5000-7f102f6d6000 ---p 00000000 00:00 0
7f102f6d6000-7f102f777000 rw-p 00000000 00:00 0
7f102f777000-7f102f778000 ---p 00000000 00:00 0
7f102f778000-7f102f819000 rw-p 00000000 00:00 0
7f102f819000-7f102f81a000 ---p 00000000 00:00 0
7f102f81a000-7f102f8bb000 rw-p 00000000 00:00 0
7f102f8bb000-7f102f8bc000 ---p 00000000 00:00 0
7f102f8bc000-7f102f95d000 rw-p 00000000 00:00 0
7f102f95d000-7f102f95e000 ---p 00000000 00:00 0
7f102f95e000-7f102f9ff000 rw-p 00000000 00:00 0
7f102f9ff000-7f102fa00000 ---p 00000000 00:00 0
7f102fa00000-7f102faa1000 rw-p 00000000 00:00 0
7f102faa1000-7f102faa2000 ---p 00000000 00:00 0
7f102faa2000-7f102fb43000 rw-p 00000000 00:00 0
7f102fb43000-7f102fb44000 ---p 00000000 00:00 0
7f102fb44000-7f102fbe5000 rw-p 00000000 00:00 0
7f102fbe5000-7f102fbe6000 ---p 00000000 00:00 0
7f102fbe6000-7f102fc87000 rw-p 00000000 00:00 0
7f102fc87000-7f102fc88000 ---p 00000000 00:00 0
7f102fc88000-7f102fd29000 rw-p 00000000 00:00 0
7f102fd29000-7f102fd2a000 ---p 00000000 00:00 0
7f102fd2a000-7f102fdcb000 rw-p 00000000 00:00 0
7f102fdcb000-7f102fdcc000 ---p 00000000 00:00 0
7f102fdcc000-7f1031f77000 rw-p 00000000 00:00 0
7f1031f77000-7f1032541000 r--p 00000000 08:01 27920549                   /usr/lib/locale/locale-archive
7f1032541000-7f1032543000 rw-p 00000000 00:00 0
7f1032543000-7f1032552000 r--p 00000000 08:01 14419030                   /lib/x86_64-linux-gnu/libm-2.30.so
7f1032552000-7f10325f9000 r-xp 0000f000 08:01 14419030                   /lib/x86_64-linux-gnu/libm-2.30.so
7f10325f9000-7f1032690000 r--p 000b6000 08:01 14419030                   /lib/x86_64-linux-gnu/libm-2.30.so
7f1032690000-7f1032691000 r--p 0014c000 08:01 14419030                   /lib/x86_64-linux-gnu/libm-2.30.so
7f1032691000-7f1032692000 rw-p 0014d000 08:01 14419030                   /lib/x86_64-linux-gnu/libm-2.30.so
7f1032692000-7f1032693000 r--p 00000000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f1032693000-7f1032699000 r-xp 00001000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f1032699000-7f103269b000 r--p 00007000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f103269b000-7f103269c000 ---p 00009000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f103269c000-7f103269d000 r--p 00009000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f103269d000-7f103269e000 rw-p 0000a000 08:01 14418936                   /lib/x86_64-linux-gnu/libcrypt-2.30.so
7f103269e000-7f10326cc000 rw-p 00000000 00:00 0
7f10326cc000-7f10326cd000 r--p 00000000 08:01 14419029                   /lib/x86_64-linux-gnu/libdl-2.30.so
7f10326cd000-7f10326cf000 r-xp 00001000 08:01 14419029                   /lib/x86_64-linux-gnu/libdl-2.30.so
7f10326cf000-7f10326d0000 r--p 00003000 08:01 14419029                   /lib/x86_64-linux-gnu/libdl-2.30.so
7f10326d0000-7f10326d1000 r--p 00003000 08:01 14419029                   /lib/x86_64-linux-gnu/libdl-2.30.so
7f10326d1000-7f10326d2000 rw-p 00004000 08:01 14419029                   /lib/x86_64-linux-gnu/libdl-2.30.so
7f10326d2000-7f10326d4000 rw-p 00000000 00:00 0
7f10326d4000-7f10326de000 r--p 00000000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f10326de000-7f103273b000 r-xp 0000a000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f103273b000-7f1032752000 r--p 00067000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f1032752000-7f1032753000 ---p 0007e000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f1032753000-7f1032754000 r--p 0007e000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f1032754000-7f1032755000 rw-p 0007f000 08:01 27922002                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f1032755000-7f1032758000 r--p 00000000 08:01 14421581                   /lib/x86_64-linux-gnu/librt-2.30.so
7f1032758000-7f103275c000 r-xp 00003000 08:01 14421581                   /lib/x86_64-linux-gnu/librt-2.30.so
7f103275c000-7f103275e000 r--p 00007000 08:01 14421581                   /lib/x86_64-linux-gnu/librt-2.30.so
7f103275e000-7f103275f000 r--p 00008000 08:01 14421581                   /lib/x86_64-linux-gnu/librt-2.30.so
7f103275f000-7f1032760000 rw-p 00009000 08:01 14421581                   /lib/x86_64-linux-gnu/librt-2.30.so
7f1032760000-7f1032767000 r--p 00000000 08:01 14421387                   /lib/x86_64-linux-gnu/libpthread-2.30.so
7f1032767000-7f1032778000 r-xp 00007000 08:01 14421387                   /lib/x86_64-linux-gnu/libpthread-2.30.so
7f1032778000-7f103277d000 r--p 00018000 08:01 14421387                   /lib/x86_64-linux-gnu/libpthread-2.30.so
7f103277d000-7f103277e000 r--p 0001c000 08:01 14421387                   /lib/x86_64-linux-gnu/libpthread-2.30.so
7f103277e000-7f103277f000 rw-p 0001d000 08:01 14421387                   /lib/x86_64-linux-gnu/libpthread-2.30.so
7f103277f000-7f1032783000 rw-p 00000000 00:00 0
7f1032783000-7f1032785000 r--p 00000000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f1032785000-7f1032796000 r-xp 00002000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f1032796000-7f103279c000 r--p 00013000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f103279c000-7f103279d000 ---p 00019000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f103279d000-7f103279e000 r--p 00019000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f103279e000-7f103279f000 rw-p 0001a000 08:01 14418340                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f103279f000-7f10327c4000 r--p 00000000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f10327c4000-7f103293c000 r-xp 00025000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f103293c000-7f1032986000 r--p 0019d000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f1032986000-7f1032989000 r--p 001e6000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f1032989000-7f103298c000 rw-p 001e9000 08:01 14418935                   /lib/x86_64-linux-gnu/libc-2.30.so
7f103298c000-7f1032990000 rw-p 00000000 00:00 0
7f1032994000-7f1032996000 r--p 00000000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f1032996000-7f103299a000 r-xp 00002000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f103299a000-7f103299b000 r--p 00006000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f103299b000-7f103299c000 ---p 00007000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f103299c000-7f103299d000 r--p 00007000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f103299d000-7f103299e000 rw-p 00008000 08:14 43391874                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/io/console.so
7f103299e000-7f10329a1000 r--p 00000000 08:14 43391807                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
7f10329a1000-7f10329a6000 r-xp 00003000 08:14 43391807                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
7f10329a6000-7f10329a8000 r--p 00008000 08:14 43391807                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
7f10329a8000-7f10329a9000 r--p 00009000 08:14 43391807                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
7f10329a9000-7f10329aa000 rw-p 0000a000 08:14 43391807                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/readline.so
7f10329aa000-7f10329ab000 r--p 00000000 08:14 43391798                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
7f10329ab000-7f10329ac000 r-xp 00001000 08:14 43391798                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
7f10329ac000-7f10329ad000 r--p 00002000 08:14 43391798                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
7f10329ad000-7f10329ae000 r--p 00002000 08:14 43391798                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
7f10329ae000-7f10329af000 rw-p 00003000 08:14 43391798                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so
7f10329af000-7f10329b0000 r--p 00000000 08:14 43391848                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
7f10329b0000-7f10329b2000 r-xp 00001000 08:14 43391848                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
7f10329b2000-7f10329b3000 r--p 00003000 08:14 43391848                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
7f10329b3000-7f10329b4000 r--p 00003000 08:14 43391848                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
7f10329b4000-7f10329b5000 rw-p 00004000 08:14 43391848                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so
7f10329b5000-7f10329b6000 r--p 00000000 08:14 43391833                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
7f10329b6000-7f10329b7000 r-xp 00001000 08:14 43391833                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
7f10329b7000-7f10329b8000 r--p 00002000 08:14 43391833                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
7f10329b8000-7f10329b9000 r--p 00002000 08:14 43391833                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
7f10329b9000-7f10329ba000 rw-p 00003000 08:14 43391833                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so
7f10329ba000-7f10329e7000 r--p 00000000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f10329e7000-7f1032c73000 r-xp 0002d000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f1032c73000-7f1032d6a000 r--p 002b9000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f1032d6a000-7f1032d70000 r--p 003af000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f1032d70000-7f1032d73000 rw-p 003b5000 08:14 43391783                   /home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7.0
7f1032d73000-7f1032d90000 rw-p 00000000 00:00 0
7f1032d90000-7f1032d91000 r--p 00000000 08:01 14418882                   /lib/x86_64-linux-gnu/ld-2.30.so
7f1032d91000-7f1032db3000 r-xp 00001000 08:01 14418882                   /lib/x86_64-linux-gnu/ld-2.30.so
7f1032db3000-7f1032dbb000 r--p 00023000 08:01 14418882                   /lib/x86_64-linux-gnu/ld-2.30.so
7f1032dbc000-7f1032dbd000 r--p 0002b000 08:01 14418882                   /lib/x86_64-linux-gnu/ld-2.30.so
7f1032dbd000-7f1032dbe000 rw-p 0002c000 08:01 14418882                   /lib/x86_64-linux-gnu/ld-2.30.so
7f1032dbe000-7f1032dbf000 rw-p 00000000 00:00 0
7ffeeaaed000-7ffeeb2ec000 rw-p 00000000 00:00 0                          [stack]
7ffeeb306000-7ffeeb309000 r--p 00000000 00:00 0                          [vvar]
7ffeeb309000-7ffeeb30a000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]


Abgebrochen (Speicherabzug geschrieben)
lars@isa:~/comcard/ffi$  git:(master) 3M 12A

@larskanis
Copy link
Member Author

It turned out that issue is easily reproducible when GC.verify_compaction_references is called with the right arguments:

require "ffi"

class St < FFI::Struct
  layout  :i, :int
end

s = St.new
p GC.verify_compaction_references(toward: :empty, double_heap: true)[:moved]
s[:i]

Fails with:

lars@isa:~/comcard/ffi$  git:(master) 1M 13A ruby test-gc-compact.rb 
{:T_NONE=>0, :T_OBJECT=>758, :T_CLASS=>509, :T_MODULE=>15, :T_FLOAT=>0, :T_STRING=>8810, :T_REGEXP=>85, :T_ARRAY=>1381, :T_HASH=>85, :T_STRUCT=>11, :T_BIGNUM=>0, :T_FILE=>0, :T_DATA=>103, :T_MATCH=>0, :T_COMPLEX=>0, :T_RATIONAL=>0, 16=>0, :T_NIL=>0, :T_TRUE=>0, :T_FALSE=>0, :T_SYMBOL=>132, :T_FIXNUM=>0, :T_UNDEF=>0, 23=>0, 24=>0, 25=>0, :T_IMEMO=>5074, :T_NODE=>0, :T_ICLASS=>52, :T_ZOMBIE=>0, :T_MOVED=>0}
test-gc-compact.rb:9: [BUG] Segmentation fault at 0x0000000000000028
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0003 p:---- s:0012 e:000011 CFUNC  :[]
c:0002 p:0068 s:0007 E:000138 EVAL   test-gc-compact.rb:9 [FINISH]
c:0001 p:0000 s:0003 E:001e80 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
test-gc-compact.rb:9:in `<main>'
test-gc-compact.rb:9:in `[]'

-- Machine register context ------------------------------------------------
 RIP: 0x00007fdd5f9090b3 RBP: 0x000055cf3b812af0 RSP: 0x00007ffdd1cbb470
 RAX: 0x0000000000000001 RBX: 0x000055cf3ba1b4d0 RCX: 0x0000000000000000
 RDX: 0x000055cf3b88dec0 RDI: 0x0000000000000000 RSI: 0x000000000026310c
  R8: 0x000055cf3b871f08  R9: 0x000000000000001f R10: 0x00007fdd63c9a4f0
 R11: 0x00007fdd63ab8b80 R12: 0x000000000026310c R13: 0x000055cf3b812a70
 R14: 0x000055cf3ba1b4d0 R15: 0x000055cf3b8c0a20 EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_vm_bugreport+0x573) [0x7fdd63b51a73] vm_dump.c:755
[0x7fdd63974dab]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(sigsegv+0x4d) [0x7fdd63aae7cd] signal.c:946
/lib/x86_64-linux-gnu/libc.so.6(0x7fdd636d0470) [0x7fdd636d0470]
/home/lars/.rvm/gems/ruby-2.7.0/gems/ffi-1.12.1/lib/ffi_c.so(struct_aref+0x73) [0x7fdd5f9090b3] Struct.c:317
[0x7fdd63b29b00]
[0x7fdd63b3effb]
[0x7fdd63b3720b]
[0x7fdd63b3db64]
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(rb_ec_exec_node+0xc1) [0x7fdd639798e1] eval.c:277
/home/lars/.rvm/rubies/ruby-2.7.0/lib/libruby.so.2.7(ruby_run_node+0x4e) [0x7fdd6397f1fe] eval.c:335
/home/lars/.rvm/rubies/ruby-2.7.0/bin/ruby(main+0x5f) [0x55cf39b2217f] ./main.c:50

But after commit 6662bcc no segfault occurs any longer.

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