ruby/rubygems · error · Gem::SafeMarshal::Visitors::ToRuby::TimeTooLargeError

binary string too large @ #{stack.join(".")}

Error message

binary string too large @ #{stack.join(".")}

What it means

Error "binary string too large @ #{stack.join(".")}" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/safe_marshal/visitors/to_ruby.rb:102

        case e.object
        when Elements::UserDefined
          if object.class == ::Time
            internal = []

            ivars.reject! do |k, v|
              case k
              when :offset, :zone, :nano_num, :nano_den, :submicro
                internal << [k, v]
                true
              else
                false
              end
            end

            s = e.object.binary_string
            # 122 is the largest integer that can be represented in marshal in a single byte
            raise TimeTooLargeError.new("binary string too large", stack: formatted_stack) if s.bytesize > 122

            marshal_string = "\x04\bIu:\tTime".b
            marshal_string.concat(s.bytesize + 5)
            marshal_string << s
            # internal is limited to 5, so no overflow is possible
            marshal_string.concat(internal.size + 5)

            internal.each do |k, v|
              k = k.name
              # ivar name can't be too large because only known ivars are in the internal ivars list
              marshal_string.concat(":")
              marshal_string.concat(k.bytesize + 5)
              marshal_string.concat(k)
              dumped = Marshal.dump(v)
              dumped[0, 2] = ""
              marshal_string.concat(dumped)
            end

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. The metadata contains an oversized binary string; the gem is corrupt or malicious — re-download from the official source

When it happens

Trigger: Thrown at lib/rubygems/safe_marshal/visitors/to_ruby.rb:102 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23). Data as JSON: /api/errors/729a2e7b6fadba6a. Report an issue: GitHub.