Skip to content

mimemagic not compaction-friendly #166

@HoneyryderChuck

Description

@HoneyryderChuck

I'm getting an error which is frequently reproducible in CI and locally via docker, when GC auto-compact is turned on.

> bundle exec ruby -e 'GC.auto_compact = true if GC.respond_to?(:auto_compact=) ; require "mimemagic"'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/searchable.rb:264: [BUG] Segmentation fault at 0x000000000000004c
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0011 p:0105 s:0067 e:000065 METHOD /usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/searchable.rb:264
c:0010 p:0005 s:0057 e:000056 METHOD /usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/searchable.rb:52
c:0009 p:0016 s:0047 e:000045 BLOCK  /usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic/tables.rb:80
c:0008 p:0008 s:0038 e:000037 BLOCK  /usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:233 [FINISH]
c:0007 p:---- s:0034 e:000033 CFUNC  :upto
c:0006 p:0019 s:0029 e:000028 METHOD /usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:232
c:0005 p:0041 s:0025 e:000024 METHOD /usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic/tables.rb:79
c:0004 p:0029 s:0014 e:000013 TOP    /usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic.rb:8 [FINISH]
c:0003 p:---- s:0011 e:000010 CFUNC  :require
c:0002 p:0034 s:0006 e:000005 EVAL   -e:1 [FINISH]
c:0001 p:0000 s:0003 E:000cb0 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:1:in `<main>'
-e:1:in `require'
/usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic.rb:8:in `<top (required)>'
/usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic/tables.rb:79:in `parse_database'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:232:in `each'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:232:in `upto'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `block in each'
/usr/local/bundle/ruby/3.0.0/gems/mimemagic-0.4.3/lib/mimemagic/tables.rb:80:in `block in parse_database'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/searchable.rb:52:in `search'
/usr/local/bundle/ruby/3.0.0/gems/nokogiri-1.13.1-x86_64-linux/lib/nokogiri/xml/searchable.rb:264:in `extract_params'

-- Machine register context ------------------------------------------------
 RIP: 0x00007fccc87b0500 RBP: 0x0000000000000034 RSP: 0x00007fff3b7acf00
 RAX: 0x0000000000000000 RBX: 0x00005626cf776df0 RCX: 0x000170c100100001
 RDX: 0x0000000000000000 RDI: 0x000170c100100001 RSI: 0x0000000000000034
  R8: 0x0000000000000000  R9: 0x0000000000000001 R10: 0x0000000000000002
...

Although it points to nokogiri, it's not reproducible if I require it as above.

cc @tenderlove

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