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

Add upper limit on initial buffer size in MessagePack::Unpacker #368

Merged
merged 1 commit into from
Oct 4, 2024

Conversation

Watson1978
Copy link
Contributor

Currently, the initial buffer size is specified in rb_ary_new2() or rb_hash_new_capa(). If a huge size is specified, a large amount of memory is allocated and system memory might be depleted.

We want to unpack the data received over the network. However the service may stop due to large amount of memory allocation with crafted data.

So this patch add upper limit on initial buffer size. If the buffer runs out, Ruby API will be reallocated automatically.

Test code

require "msgpack"

puts "msgpack version: #{MessagePack::VERSION}"

unpacker = MessagePack::Unpacker.new
unpacker.feed_each("\xDF\x20\x00\x00\x00") {}

puts "Memory Usage: #{`ps -o rss= -p #{Process.pid}`.strip} KB"

Before

Before it apply this patch, it allocates 8 GB memory on my environment.

$ ruby -v test.rb
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
msgpack version: 1.7.2
Memory Usage: 8403320 KB

After

ruby -v test.rb
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
msgpack version: 1.7.2
Memory Usage: 14480 KB

Currently, the initial buffer size is specified in rb_ary_new2() or rb_hash_new_capa().
If a huge size is specified, a large amount of memory is allocated and system memory might be depleted.

We want to unpack the data received over the network.
However the service may stop due to large amount of memory allocation with crafted data.

So this patch add upper limit on initial buffer size.
If the buffer runs out, Ruby API will be reallocated automatically.

## Test code
```ruby
require "msgpack"

puts "msgpack version: #{MessagePack::VERSION}"

unpacker = MessagePack::Unpacker.new
unpacker.feed_each("\xDF\x20\x00\x00\x00") {}

puts "Memory Usage: #{`ps -o rss= -p #{Process.pid}`.strip} KB"
```

## Before
Before it apply this patch, it allocates 8 GB memory on my environment.

```
$ ruby -v test.rb
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
msgpack version: 1.7.2
Memory Usage: 8403320 KB
```

## After
```
ruby -v test.rb
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
msgpack version: 1.7.2
Memory Usage: 14480 KB
```
@byroot
Copy link
Member

byroot commented Oct 3, 2024

So, I'm OK with this change, because SHORT_MAX is already plenty, and it's unlikely users have arrays or hashes larger than that, but I'd like to understand a bit more.

You can't get a partially parsed array or hash, so unless this payload is malicious, you will end up needing such a large array/hash to parse in the end. Or am I missing something?

@Watson1978
Copy link
Contributor Author

Watson1978 commented Oct 4, 2024

You can't get a partially parsed array or hash, so unless this payload is malicious, you will end up needing such a large array/hash to parse in the end. Or am I missing something?

Yes, you're right!
It is correct that a huge Hash or Array is created if the data is valid.

@byroot
Copy link
Member

byroot commented Oct 4, 2024

So is this really a problem? Ruby will have to allocate this much eventually, might as well do it upfront, no?

@Watson1978
Copy link
Contributor Author

We would like to retrive exceptions like parse errors by invalid data, but suddenly huge memory is allocated at first.
The application might down and not be able to handle the error...

@daipom
Copy link

daipom commented Oct 4, 2024

@byroot

unless this payload is malicious,

I'm concerned about this.
I'm concerned that it is so easy to make the system consume an arbitrary amount of memory, and the application-side can't limit it.

@byroot
Copy link
Member

byroot commented Oct 4, 2024

I'm concerned about this.

That's fair, that's all I wanted to understand.

@byroot byroot merged commit a7a9218 into msgpack:master Oct 4, 2024
17 checks passed
@daipom
Copy link

daipom commented Oct 4, 2024

@Watson1978 Thanks for this enhancement!
@byroot Thanks for your review and merge!

@Watson1978
Copy link
Contributor Author

Thanks

@Fryguy
Copy link

Fryguy commented Oct 15, 2024

We have been investigating a segfault in our application for the last few days, and we believe this PR has fixed the problem coincidentally. This was only happening in our CentOS 8 VM with Red Hat's ruby 3.0.4, and we couldn't get it to happen on any other system, so it's been difficult to track down. Upgrading to msgpack 1.7.3 and the problem now goes away, so posting this here for others if they happen to hit the same thing.

This script was causing the segfault:

require "bundler/inline"

gemfile do
  source "https://rubygems.org"
  gem "bootsnap", "=1.17.1"
  gem "msgpack", "=1.7.2"
  gem "psych", "=3.3.4"
end

yaml = "am: ''"
File.write("test.yml", yaml)

require "yaml"
require "bootsnap"
ENV["BOOTSNAP_CACHE_DIR"]=Dir.pwd + "/tmp/cache"
require "bootsnap/setup"
puts YAML.method(:unsafe_load_file)
puts

begin
  YAML.unsafe_load_file("test.yml", symbolize_names: true, freeze: true)
rescue => err
  puts "Failed loading"
  raise
end
puts "Successfully loaded"

and the error given was

RSTRING_PTR is returning NULL!! SIGSEGV is highly expected to follow immediately. If you could reproduce, attach your debugger here, and look at the passed string.
/opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:286: [BUG] Segmentation fault at 0x0000000000000000
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0006 p:---- s:0035 e:000034 CFUNC  :read
c:0005 p:0062 s:0031 e:000030 METHOD /opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:286 [FINISH]
c:0004 p:---- s:0023 e:000022 CFUNC  :fetch
c:0003 p:0181 s:0015 e:000014 METHOD /opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:324
c:0002 p:0116 s:0008 E:0005d0 EVAL   segfault.rb:21 [FINISH]
c:0001 p:0000 s:0003 E:001110 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
segfault.rb:21:in `<main>'
/opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:324:in `unsafe_load_file'
/opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:324:in `fetch'
/opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:286:in `storage_to_output'
/opt/manageiq/manageiq-gemset/gems/bootsnap-1.17.1/lib/bootsnap/compile_cache/yaml.rb:286:in `read'

@byroot
Copy link
Member

byroot commented Oct 15, 2024

This script was causing the segfault:

Only on your red hat right? Because I can't reproduce it on my machine it seems. Or maybe it needs ruby 3.0.4 exactly?

RSTRING_PTR is returning NULL!!

This is WTF.

You issue being fixed by this PR would suggest that msgpack would end up over allocating so much, that it would make a difference, but given your repro script, I don't see how that's possible unless there is another bug somewhere.

@byroot
Copy link
Member

byroot commented Oct 15, 2024

I'd be very interested in the full crash report if you have it (mostly the c level backtrace part).

@Fryguy
Copy link

Fryguy commented Oct 15, 2024

I got an even smaller repro with only msgpack, but stealing only the relevant code from Bootsnap::CompileCache::YAML:

require "bundler/inline"

gemfile do
  source "https://rubygems.org"
  gem "msgpack", "=1.7.2"
end

factory = MessagePack::Factory.new
factory.register_type(
  0x00,
  Symbol,
  packer: :to_msgpack_ext,
  unpacker: ->(payload) { (+payload).force_encoding(Encoding::UTF_8).to_sym },
)

input = {"x" => ""}
puts "input: #{input}"

packer = factory.packer
packer.pack(input)
storage = packer.to_s
puts "storage: #{storage.inspect}"

unpacker = factory.unpacker(freeze: true)
unpacker.feed(storage)
output = unpacker.unpack
puts "output: #{output}"

Full crash report:

[root@192 ~]# ruby segfault4.rb
input: {"x"=>""}
storage: "\x81\xA1x\xA0"
storage encoding: ASCII-8BIT
RSTRING_PTR is returning NULL!! SIGSEGV is highly expected to follow immediately. If you could reproduce, attach your debugger here, and look at the passed string.
segfault4.rb:29: [BUG] Segmentation fault at 0x0000000000000000
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0003 p:---- s:0016 e:000015 CFUNC  :read
c:0002 p:0158 s:0012 E:000fa0 EVAL   segfault4.rb:29 [FINISH]
c:0001 p:0000 s:0003 E:000f80 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
segfault4.rb:29:in `<main>'
segfault4.rb:29:in `read'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f56d51b4006 RBP: 0x0000000000000000 RSP: 0x00007ffd4daebf88
 RAX: 0xfffffffffffffff9 RBX: 0x0000000000000000 RCX: 0x8080808080808080
 RDX: 0x8080808080808080 RDI: 0x0000000000000000 RSI: 0x0000000000000000
  R8: 0x00007f56d5777f40  R9: 0x00007f56d3d0e220 R10: 0x00007f56d52351b8
 R11: 0x0000000000000246 R12: 0x0000564fc9299f50 R13: 0x00007f56d51b9e40
 R14: 0x00007f56d5553a98 R15: 0x00007f56cf7424f8 EFL: 0x0000000000010213

-- C level backtrace information -------------------------------------------
/lib64/libruby.so.3.0(0x7f56d5228cc9) [0x7f56d5228cc9]
/lib64/libruby.so.3.0(0x7f56d5228ef2) [0x7f56d5228ef2]
/lib64/libruby.so.3.0(0x7f56d508ae64) [0x7f56d508ae64]
/lib64/libruby.so.3.0(0x7f56d51a317f) [0x7f56d51a317f]
/lib64/libpthread.so.0(__restore_rt+0x0) [0x7f56d4bb5d20]
/lib64/libruby.so.3.0(0x7f56d51b4006) [0x7f56d51b4006]
/lib64/libruby.so.3.0(0x7f56d51b4137) [0x7f56d51b4137]
/lib64/libruby.so.3.0(rb_enc_str_coderange+0x3b) [0x7f56d51b7e1b]
/lib64/libruby.so.3.0(rb_str_hash+0x98) [0x7f56d51b7ef8]
/lib64/libruby.so.3.0(rb_st_update+0x45) [0x7f56d51ae245]
/lib64/libruby.so.3.0(0x7f56d51b32fe) [0x7f56d51b32fe]
/lib64/libruby.so.3.0(rb_enc_interned_str+0x43) [0x7f56d51cd9c3]
/opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so(read_raw_body_begin+0x3a0) [0x7f56ce668d60]
/opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so(0xf7fa) [0x7f56ce66a7fa]
/opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so(0xff43) [0x7f56ce66af43]
/lib64/libruby.so.3.0(0x7f56d520f5b1) [0x7f56d520f5b1]
/lib64/libruby.so.3.0(0x7f56d52197d1) [0x7f56d52197d1]
/lib64/libruby.so.3.0(0x7f56d5219e24) [0x7f56d5219e24]
/lib64/libruby.so.3.0(0x7f56d520e9da) [0x7f56d520e9da]
/lib64/libruby.so.3.0(0x7f56d5212d49) [0x7f56d5212d49]
/lib64/libruby.so.3.0(rb_vm_exec+0x113) [0x7f56d5218693]
/lib64/libruby.so.3.0(0x7f56d5091086) [0x7f56d5091086]
/lib64/libruby.so.3.0(ruby_run_node+0x59) [0x7f56d5094e09]
ruby(0x564fc840ea8f) [0x564fc840ea8f]
/lib64/libc.so.6(__libc_start_main+0xe5) [0x7f56d3bb87e5]
ruby(_start+0x2e) [0x564fc840eade]

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

* Loaded script: segfault4.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 ruby2_keywords.rb
    5 /usr/lib64/ruby/enc/encdb.so
    6 /usr/lib64/ruby/enc/trans/transdb.so
    7 /usr/lib64/ruby/rbconfig.rb
    8 /usr/share/rubygems/rubygems/compatibility.rb
    9 /usr/share/rubygems/rubygems/defaults.rb
   10 /usr/share/rubygems/rubygems/deprecate.rb
   11 /usr/share/rubygems/rubygems/errors.rb
   12 /usr/share/rubygems/rubygems/exceptions.rb
   13 /usr/share/rubygems/rubygems/basic_specification.rb
   14 /usr/share/rubygems/rubygems/stub_specification.rb
   15 /usr/share/rubygems/rubygems/platform.rb
   16 /usr/share/rubygems/rubygems/version.rb
   17 /usr/share/rubygems/rubygems/requirement.rb
   18 /usr/share/rubygems/rubygems/text.rb
   19 /usr/share/rubygems/rubygems/user_interaction.rb
   20 /usr/share/rubygems/rubygems/specification_policy.rb
   21 /usr/share/rubygems/rubygems/util/list.rb
   22 /usr/share/rubygems/rubygems/specification.rb
   23 /usr/share/rubygems/rubygems/defaults/operating_system.rb
   24 /usr/share/rubygems/rubygems/util.rb
   25 /usr/share/rubygems/rubygems/dependency.rb
   26 /usr/share/rubygems/rubygems/core_ext/kernel_gem.rb
   27 /usr/lib64/ruby/monitor.so
   28 /usr/share/ruby/monitor.rb
   29 /usr/share/rubygems/rubygems/core_ext/kernel_require.rb
   30 /usr/share/rubygems/rubygems/core_ext/kernel_warn.rb
   31 /usr/share/rubygems/rubygems.rb
   32 /usr/share/rubygems/rubygems/path_support.rb
   33 /usr/share/ruby/did_you_mean/version.rb
   34 /usr/share/ruby/did_you_mean/core_ext/name_error.rb
   35 /usr/share/ruby/did_you_mean/levenshtein.rb
   36 /usr/share/ruby/did_you_mean/jaro_winkler.rb
   37 /usr/share/ruby/did_you_mean/spell_checker.rb
   38 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   39 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   40 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers.rb
   41 /usr/share/ruby/did_you_mean/spell_checkers/method_name_checker.rb
   42 /usr/share/ruby/did_you_mean/spell_checkers/key_error_checker.rb
   43 /usr/share/ruby/did_you_mean/spell_checkers/null_checker.rb
   44 /usr/share/ruby/did_you_mean/tree_spell_checker.rb
   45 /usr/share/ruby/did_you_mean/spell_checkers/require_path_checker.rb
   46 /usr/share/ruby/did_you_mean/formatters/plain_formatter.rb
   47 /usr/share/ruby/did_you_mean.rb
   48 /usr/share/rubygems/rubygems/bundler_version_finder.rb
   49 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/inline.rb
   50 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/fileutils/lib/fileutils.rb
   51 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendored_fileutils.rb
   52 /usr/lib64/ruby/pathname.so
   53 /usr/share/ruby/pathname.rb
   54 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/errors.rb
   55 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/environment_preserver.rb
   56 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin/api.rb
   57 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin.rb
   58 /usr/share/rubygems/rubygems/source/git.rb
   59 /usr/share/rubygems/rubygems/source/installed.rb
   60 /usr/share/rubygems/rubygems/source/specific_file.rb
   61 /usr/share/rubygems/rubygems/source/local.rb
   62 /usr/share/rubygems/rubygems/source/lock.rb
   63 /usr/share/rubygems/rubygems/source/vendor.rb
   64 /usr/share/rubygems/rubygems/source.rb
   65 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/match_metadata.rb
   66 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/gem_helpers.rb
   67 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/match_platform.rb
   68 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/force_platform.rb
   69 /usr/share/rubygems/rubygems/name_tuple.rb
   70 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb
   71 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb
   72 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/errors.rb
   73 /usr/share/rubygems/rubygems/tsort/lib/tsort.rb
   74 /usr/share/rubygems/rubygems/tsort.rb
   75 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb
   76 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
   77 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
   78 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
   79 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
   80 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb
   81 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb
   82 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb
   83 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb
   84 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb
   85 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/state.rb
   86 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb
   87 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
   88 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
   89 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/resolver.rb
   90 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
   91 /usr/share/rubygems/rubygems/resolver/molinillo/lib/molinillo.rb
   92 /usr/share/rubygems/rubygems/resolver/molinillo.rb
   93 /usr/share/rubygems/rubygems/resolver/activation_request.rb
   94 /usr/share/rubygems/rubygems/resolver/conflict.rb
   95 /usr/share/rubygems/rubygems/resolver/dependency_request.rb
   96 /usr/share/rubygems/rubygems/resolver/requirement_list.rb
   97 /usr/share/rubygems/rubygems/resolver/stats.rb
   98 /usr/share/rubygems/rubygems/resolver/set.rb
   99 /usr/share/rubygems/rubygems/resolver/api_set.rb
  100 /usr/share/rubygems/rubygems/resolver/composed_set.rb
  101 /usr/share/rubygems/rubygems/resolver/best_set.rb
  102 /usr/share/rubygems/rubygems/resolver/current_set.rb
  103 /usr/share/rubygems/rubygems/resolver/git_set.rb
  104 /usr/share/rubygems/rubygems/resolver/index_set.rb
  105 /usr/share/rubygems/rubygems/resolver/installer_set.rb
  106 /usr/share/rubygems/rubygems/resolver/lock_set.rb
  107 /usr/share/rubygems/rubygems/resolver/vendor_set.rb
  108 /usr/share/rubygems/rubygems/resolver/source_set.rb
  109 /usr/share/rubygems/rubygems/resolver/specification.rb
  110 /usr/share/rubygems/rubygems/resolver/spec_specification.rb
  111 /usr/share/rubygems/rubygems/resolver/api_specification.rb
  112 /usr/share/rubygems/rubygems/resolver/git_specification.rb
  113 /usr/share/rubygems/rubygems/resolver/index_specification.rb
  114 /usr/share/rubygems/rubygems/resolver/installed_specification.rb
  115 /usr/share/rubygems/rubygems/resolver/local_specification.rb
  116 /usr/share/rubygems/rubygems/resolver/lock_specification.rb
  117 /usr/share/rubygems/rubygems/resolver/vendor_specification.rb
  118 /usr/share/rubygems/rubygems/resolver.rb
  119 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/rubygems_ext.rb
  120 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/rubygems_integration.rb
  121 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/version.rb
  122 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/constants.rb
  123 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/current_ruby.rb
  124 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/build_metadata.rb
  125 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler.rb
  126 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/ui.rb
  127 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/command.rb
  128 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
  129 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/error.rb
  130 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/invocation.rb
  131 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/nested_context.rb
  132 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/parser/argument.rb
  133 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb
  134 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/parser/option.rb
  135 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/parser/options.rb
  136 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/parser.rb
  137 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell.rb
  138 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb
  139 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb
  140 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/line_editor.rb
  141 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/util.rb
  142 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/base.rb
  143 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor.rb
  144 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendored_thor.rb
  145 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/ui/shell.rb
  146 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb
  147 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb
  148 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb
  149 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb
  150 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/basic.rb
  151 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/thor/lib/thor/shell/color.rb
  152 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/ui/rg_proxy.rb
  153 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/shared_helpers.rb
  154 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/settings.rb
  155 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/feature_flag.rb
  156 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/settings/validator.rb
  157 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/dependency.rb
  158 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/ruby_dsl.rb
  159 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/dsl.rb
  160 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin/dsl.rb
  161 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source_list.rb
  162 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source.rb
  163 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source/metadata.rb
  164 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin/source_list.rb
  165 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin/installer.rb
  166 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source/rubygems.rb
  167 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/plugin/installer/rubygems.rb
  168 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/checksum.rb
  169 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/uri_normalizer.rb
  170 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/version.rb
  171 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
  172 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
  173 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/common.rb
  174 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/generic.rb
  175 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/file.rb
  176 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/ftp.rb
  177 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/http.rb
  178 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/https.rb
  179 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/ldap.rb
  180 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/ldaps.rb
  181 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/mailto.rb
  182 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/ws.rb
  183 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri/wss.rb
  184 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/uri/lib/uri.rb
  185 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendored_uri.rb
  186 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source/path.rb
  187 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source/git.rb
  188 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/lockfile_parser.rb
  189 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/definition.rb
  190 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/tsort/lib/tsort.rb
  191 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendored_tsort.rb
  192 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/spec_set.rb
  193 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb
  194 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb
  195 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
  196 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb
  197 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb
  198 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb
  199 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
  200 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb
  201 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
  202 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
  203 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb
  204 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb
  205 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb
  206 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
  207 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb
  208 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendor/pub_grub/lib/pub_grub.rb
  209 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/vendored_pub_grub.rb
  210 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/package.rb
  211 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/base.rb
  212 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/spec_group.rb
  213 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/candidate.rb
  214 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/incompatibility.rb
  215 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver/root.rb
  216 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/resolver.rb
  217 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source_map.rb
  218 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/ruby_version.rb
  219 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/gem_version_promoter.rb
  220 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/source/gemspec.rb
  221 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/index.rb
  222 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/match_remote_metadata.rb
  223 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/remote_specification.rb
  224 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/stub_specification.rb
  225 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/lazy_specification.rb
  226 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/endpoint_specification.rb
  227 /opt/manageiq/manageiq-gemset/gems/bundler-2.5.21/lib/bundler/runtime.rb
  228 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/version.rb
  229 /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
  230 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/buffer.rb
  231 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/packer.rb
  232 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/unpacker.rb
  233 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/factory.rb
  234 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/symbol.rb
  235 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/core_ext.rb
  236 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/timestamp.rb
  237 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack/time.rb
  238 /opt/manageiq/manageiq-gemset/gems/msgpack-1.7.2/lib/msgpack.rb

* Process memory map:

564fc840e000-564fc840f000 r-xp 00000000 fd:00 8953300                    /usr/bin/ruby
564fc860f000-564fc8610000 r--p 00001000 fd:00 8953300                    /usr/bin/ruby
564fc8610000-564fc8611000 rw-p 00002000 fd:00 8953300                    /usr/bin/ruby
564fc928e000-564fca02d000 rw-p 00000000 00:00 0                          [heap]
7f56cde72000-7f56ce083000 r--s 00000000 fd:00 17289955                   /usr/lib64/libc-2.28.so
7f56ce083000-7f56ce0a4000 r--s 00000000 fd:00 10084724                   /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
7f56ce0a4000-7f56ce0c9000 r--s 00000000 fd:00 17289969                   /usr/lib64/libpthread-2.28.so
7f56ce0c9000-7f56ce443000 r--s 00000000 fd:00 17637147                   /usr/lib64/libruby.so.3.0.4
7f56ce443000-7f56ce45a000 r-xp 00000000 fd:00 16797830                   /usr/lib64/libgcc_s-8-20210514.so.1
7f56ce45a000-7f56ce659000 ---p 00017000 fd:00 16797830                   /usr/lib64/libgcc_s-8-20210514.so.1
7f56ce659000-7f56ce65a000 r--p 00016000 fd:00 16797830                   /usr/lib64/libgcc_s-8-20210514.so.1
7f56ce65a000-7f56ce65b000 rw-p 00017000 fd:00 16797830                   /usr/lib64/libgcc_s-8-20210514.so.1
7f56ce65b000-7f56ce66f000 r-xp 00000000 fd:00 10084724                   /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
7f56ce66f000-7f56ce86f000 ---p 00014000 fd:00 10084724                   /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
7f56ce86f000-7f56ce870000 r--p 00014000 fd:00 10084724                   /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
7f56ce870000-7f56ce871000 rw-p 00015000 fd:00 10084724                   /opt/manageiq/manageiq-gemset/extensions/x86_64-linux/3.0.0/msgpack-1.7.2/msgpack/msgpack.so
7f56ce871000-7f56ce878000 r-xp 00000000 fd:00 497682                     /usr/lib64/ruby/pathname.so
7f56ce878000-7f56cea78000 ---p 00007000 fd:00 497682                     /usr/lib64/ruby/pathname.so
7f56cea78000-7f56cea79000 r--p 00007000 fd:00 497682                     /usr/lib64/ruby/pathname.so
7f56cea79000-7f56cea7a000 rw-p 00000000 00:00 0
7f56cea7a000-7f56cea7c000 r-xp 00000000 fd:00 497678                     /usr/lib64/ruby/monitor.so
7f56cea7c000-7f56cec7b000 ---p 00002000 fd:00 497678                     /usr/lib64/ruby/monitor.so
7f56cec7b000-7f56cec7c000 r--p 00001000 fd:00 497678                     /usr/lib64/ruby/monitor.so
7f56cec7c000-7f56cec7d000 rw-p 00000000 00:00 0
7f56cec7d000-7f56cec80000 r-xp 00000000 fd:00 497670                     /usr/lib64/ruby/enc/trans/transdb.so
7f56cec80000-7f56cee7f000 ---p 00003000 fd:00 497670                     /usr/lib64/ruby/enc/trans/transdb.so
7f56cee7f000-7f56cee80000 r--p 00002000 fd:00 497670                     /usr/lib64/ruby/enc/trans/transdb.so
7f56cee80000-7f56cee81000 rw-p 00000000 00:00 0
7f56cee81000-7f56cee83000 r-xp 00000000 fd:00 25747085                   /usr/lib64/ruby/enc/encdb.so
7f56cee83000-7f56cf082000 ---p 00002000 fd:00 25747085                   /usr/lib64/ruby/enc/encdb.so
7f56cf082000-7f56cf083000 r--p 00001000 fd:00 25747085                   /usr/lib64/ruby/enc/encdb.so
7f56cf083000-7f56d06d8000 rw-p 00000000 00:00 0
7f56d06d8000-7f56d06d9000 ---p 00000000 00:00 0
7f56d06d9000-7f56d077a000 rw-p 00000000 00:00 0
7f56d077a000-7f56d077b000 ---p 00000000 00:00 0
7f56d077b000-7f56d081c000 rw-p 00000000 00:00 0
7f56d081c000-7f56d081d000 ---p 00000000 00:00 0
7f56d081d000-7f56d08be000 rw-p 00000000 00:00 0
7f56d08be000-7f56d08bf000 ---p 00000000 00:00 0
7f56d08bf000-7f56d0960000 rw-p 00000000 00:00 0
7f56d0960000-7f56d0961000 ---p 00000000 00:00 0
7f56d0961000-7f56d0a02000 rw-p 00000000 00:00 0
7f56d0a02000-7f56d0a03000 ---p 00000000 00:00 0
7f56d0a03000-7f56d0aa4000 rw-p 00000000 00:00 0
7f56d0aa4000-7f56d0aa5000 ---p 00000000 00:00 0
7f56d0aa5000-7f56d0b46000 rw-p 00000000 00:00 0
7f56d0b46000-7f56d0b47000 ---p 00000000 00:00 0
7f56d0b47000-7f56d0be8000 rw-p 00000000 00:00 0
7f56d0be8000-7f56d0be9000 ---p 00000000 00:00 0
7f56d0be9000-7f56d0c8a000 rw-p 00000000 00:00 0
7f56d0c8a000-7f56d0c8b000 ---p 00000000 00:00 0
7f56d0c8b000-7f56d0d2c000 rw-p 00000000 00:00 0
7f56d0d2c000-7f56d0d2d000 ---p 00000000 00:00 0
7f56d0d2d000-7f56d0dce000 rw-p 00000000 00:00 0
7f56d0dce000-7f56d0dcf000 ---p 00000000 00:00 0
7f56d0dcf000-7f56d0e70000 rw-p 00000000 00:00 0
7f56d0e70000-7f56d0e71000 ---p 00000000 00:00 0
7f56d0e71000-7f56d0f12000 rw-p 00000000 00:00 0
7f56d0f12000-7f56d0f13000 ---p 00000000 00:00 0
7f56d0f13000-7f56d0fb4000 rw-p 00000000 00:00 0
7f56d0fb4000-7f56d0fb5000 ---p 00000000 00:00 0
7f56d0fb5000-7f56d1056000 rw-p 00000000 00:00 0
7f56d1056000-7f56d1057000 ---p 00000000 00:00 0
7f56d1057000-7f56d10f8000 rw-p 00000000 00:00 0
7f56d10f8000-7f56d10f9000 ---p 00000000 00:00 0
7f56d10f9000-7f56d119a000 rw-p 00000000 00:00 0
7f56d119a000-7f56d119b000 ---p 00000000 00:00 0
7f56d119b000-7f56d123c000 rw-p 00000000 00:00 0
7f56d123c000-7f56d123d000 ---p 00000000 00:00 0
7f56d123d000-7f56d12de000 rw-p 00000000 00:00 0
7f56d12de000-7f56d12df000 ---p 00000000 00:00 0
7f56d12df000-7f56d1380000 rw-p 00000000 00:00 0
7f56d1380000-7f56d1381000 ---p 00000000 00:00 0
7f56d1381000-7f56d1422000 rw-p 00000000 00:00 0
7f56d1422000-7f56d1423000 ---p 00000000 00:00 0
7f56d1423000-7f56d14c4000 rw-p 00000000 00:00 0
7f56d14c4000-7f56d14c5000 ---p 00000000 00:00 0
7f56d14c5000-7f56d1566000 rw-p 00000000 00:00 0
7f56d1566000-7f56d1567000 ---p 00000000 00:00 0
7f56d1567000-7f56d1608000 rw-p 00000000 00:00 0
7f56d1608000-7f56d1609000 ---p 00000000 00:00 0
7f56d1609000-7f56d16aa000 rw-p 00000000 00:00 0
7f56d16aa000-7f56d16ab000 ---p 00000000 00:00 0
7f56d16ab000-7f56d174c000 rw-p 00000000 00:00 0
7f56d174c000-7f56d174d000 ---p 00000000 00:00 0
7f56d174d000-7f56d17ee000 rw-p 00000000 00:00 0
7f56d17ee000-7f56d17ef000 ---p 00000000 00:00 0
7f56d17ef000-7f56d1890000 rw-p 00000000 00:00 0
7f56d1890000-7f56d1891000 ---p 00000000 00:00 0
7f56d1891000-7f56d1932000 rw-p 00000000 00:00 0
7f56d1932000-7f56d1933000 ---p 00000000 00:00 0
7f56d1933000-7f56d19d4000 rw-p 00000000 00:00 0
7f56d19d4000-7f56d19d5000 ---p 00000000 00:00 0
7f56d19d5000-7f56d1a76000 rw-p 00000000 00:00 0
7f56d1a76000-7f56d1a77000 ---p 00000000 00:00 0
7f56d1a77000-7f56d3b18000 rw-p 00000000 00:00 0
7f56d3b1d000-7f56d3b7e000 rw-p 00000000 00:00 0
7f56d3b7e000-7f56d3d4b000 r-xp 00000000 fd:00 17289955                   /usr/lib64/libc-2.28.so
7f56d3d4b000-7f56d3f4a000 ---p 001cd000 fd:00 17289955                   /usr/lib64/libc-2.28.so
7f56d3f4a000-7f56d3f4e000 r--p 001cc000 fd:00 17289955                   /usr/lib64/libc-2.28.so
7f56d3f4e000-7f56d3f50000 rw-p 001d0000 fd:00 17289955                   /usr/lib64/libc-2.28.so
7f56d3f50000-7f56d3f54000 rw-p 00000000 00:00 0
7f56d3f54000-7f56d40d5000 r-xp 00000000 fd:00 17289959                   /usr/lib64/libm-2.28.so
7f56d40d5000-7f56d42d4000 ---p 00181000 fd:00 17289959                   /usr/lib64/libm-2.28.so
7f56d42d4000-7f56d42d5000 r--p 00180000 fd:00 17289959                   /usr/lib64/libm-2.28.so
7f56d42d5000-7f56d42d6000 rw-p 00181000 fd:00 17289959                   /usr/lib64/libm-2.28.so
7f56d42d6000-7f56d42f6000 r-xp 00000000 fd:00 17290144                   /usr/lib64/libcrypt.so.1.1.0
7f56d42f6000-7f56d44f5000 ---p 00020000 fd:00 17290144                   /usr/lib64/libcrypt.so.1.1.0
7f56d44f5000-7f56d44f6000 r--p 0001f000 fd:00 17290144                   /usr/lib64/libcrypt.so.1.1.0
7f56d44f6000-7f56d44ff000 rw-p 00000000 00:00 0
7f56d44ff000-7f56d4502000 r-xp 00000000 fd:00 17289957                   /usr/lib64/libdl-2.28.so
7f56d4502000-7f56d4701000 ---p 00003000 fd:00 17289957                   /usr/lib64/libdl-2.28.so
7f56d4701000-7f56d4702000 r--p 00002000 fd:00 17289957                   /usr/lib64/libdl-2.28.so
7f56d4702000-7f56d4703000 rw-p 00003000 fd:00 17289957                   /usr/lib64/libdl-2.28.so
7f56d4703000-7f56d4799000 r-xp 00000000 fd:00 17290312                   /usr/lib64/libgmp.so.10.3.2
7f56d4799000-7f56d4998000 ---p 00096000 fd:00 17290312                   /usr/lib64/libgmp.so.10.3.2
7f56d4998000-7f56d499a000 r--p 00095000 fd:00 17290312                   /usr/lib64/libgmp.so.10.3.2
7f56d499a000-7f56d499b000 rw-p 00097000 fd:00 17290312                   /usr/lib64/libgmp.so.10.3.2
7f56d499b000-7f56d49a2000 r-xp 00000000 fd:00 17289973                   /usr/lib64/librt-2.28.so
7f56d49a2000-7f56d4ba1000 ---p 00007000 fd:00 17289973                   /usr/lib64/librt-2.28.so
7f56d4ba1000-7f56d4ba2000 r--p 00006000 fd:00 17289973                   /usr/lib64/librt-2.28.so
7f56d4ba2000-7f56d4ba3000 rw-p 00007000 fd:00 17289973                   /usr/lib64/librt-2.28.so
7f56d4ba3000-7f56d4bbe000 r-xp 00000000 fd:00 17289969                   /usr/lib64/libpthread-2.28.so
7f56d4bbe000-7f56d4dbd000 ---p 0001b000 fd:00 17289969                   /usr/lib64/libpthread-2.28.so
7f56d4dbd000-7f56d4dbe000 r--p 0001a000 fd:00 17289969                   /usr/lib64/libpthread-2.28.so
7f56d4dbe000-7f56d4dbf000 rw-p 0001b000 fd:00 17289969                   /usr/lib64/libpthread-2.28.so
7f56d4dbf000-7f56d4dc3000 rw-p 00000000 00:00 0
7f56d4dc3000-7f56d4dd9000 r-xp 00000000 fd:00 17290116                   /usr/lib64/libz.so.1.2.11
7f56d4dd9000-7f56d4fd9000 ---p 00016000 fd:00 17290116                   /usr/lib64/libz.so.1.2.11
7f56d4fd9000-7f56d4fda000 r--p 00016000 fd:00 17290116                   /usr/lib64/libz.so.1.2.11
7f56d4fda000-7f56d4fdb000 rw-p 00000000 00:00 0
7f56d4fdb000-7f56d5339000 r-xp 00000000 fd:00 17637147                   /usr/lib64/libruby.so.3.0.4
7f56d5339000-7f56d5539000 ---p 0035e000 fd:00 17637147                   /usr/lib64/libruby.so.3.0.4
7f56d5539000-7f56d5543000 r--p 0035e000 fd:00 17637147                   /usr/lib64/libruby.so.3.0.4
7f56d5543000-7f56d5544000 rw-p 00368000 fd:00 17637147                   /usr/lib64/libruby.so.3.0.4
7f56d5544000-7f56d5554000 rw-p 00000000 00:00 0
7f56d5554000-7f56d5583000 r-xp 00000000 fd:00 17289948                   /usr/lib64/ld-2.28.so
7f56d5588000-7f56d571d000 rw-p 00000000 00:00 0
7f56d571d000-7f56d5724000 r--s 00000000 fd:00 17290069                   /usr/lib64/gconv/gconv-modules.cache
7f56d5724000-7f56d5777000 r--p 00000000 fd:00 25694168                   /usr/lib/locale/C.utf8/LC_CTYPE
7f56d5777000-7f56d577d000 rw-p 00000000 00:00 0
7f56d577f000-7f56d5783000 r--s 00000000 fd:00 8953300                    /usr/bin/ruby
7f56d5783000-7f56d5784000 r--p 0002f000 fd:00 17289948                   /usr/lib64/ld-2.28.so
7f56d5784000-7f56d5786000 rw-p 00030000 fd:00 17289948                   /usr/lib64/ld-2.28.so
7ffd4d2f0000-7ffd4daef000 rw-p 00000000 00:00 0                          [stack]
7ffd4db45000-7ffd4db49000 r--p 00000000 00:00 0                          [vvar]
7ffd4db49000-7ffd4db4b000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]


Aborted (core dumped)

@Fryguy
Copy link

Fryguy commented Oct 15, 2024

Only on your red hat right? Because I can't reproduce it on my machine it seems. Or maybe it needs ruby 3.0.4 exactly?

I tried on Mac with 3.0.4 with no luck - we're trying to see if we can get a standalone container with it.

@byroot
Copy link
Member

byroot commented Oct 15, 2024

@Fryguy thank you very much for continuing the investigation that is very valuable. Feel free to open a new issue for further reporting.

@Fryguy
Copy link

Fryguy commented Oct 15, 2024

You issue being fixed by this PR would suggest that msgpack would end up over allocating so much, that it would make a difference, but given your repro script, I don't see how that's possible unless there is another bug somewhere.

That's exactly why I started this convo - I can't understand why this PR would fix it, and it feels like another bug is lurking either in here or in combination with how bootsnap is using it. If you;d like a separate issue somewhere, I'd be happy to open.

@Fryguy Fryguy mentioned this pull request Oct 15, 2024
@Fryguy
Copy link

Fryguy commented Oct 15, 2024

I opened #369 with an even smaller reproducer - still going to plug away at this but moving the convo there.

@Fryguy
Copy link

Fryguy commented Oct 15, 2024

Just a followup for future readers - this PR did not fix the segfault and it was caused by a different reason - see #369

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

Successfully merging this pull request may close these issues.

4 participants