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
- 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.