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

Unexpected sign for Bignum #{b.sign.chr.inspect} (#{b.sign})

Error message

Unexpected sign for Bignum #{b.sign.chr.inspect} (#{b.sign})

What it means

Error "Unexpected sign for Bignum #{b.sign.chr.inspect} (#{b.sign})" thrown in ruby/rubygems.

Source

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

          else
            f.string.to_f
          end
        )
      end

      def visit_Gem_SafeMarshal_Elements_Bignum(b)
        result = 0
        b.data.each_byte.with_index do |byte, exp|
          result += (byte * 2**(exp * 8))
        end

        case b.sign
        when 43 # ?+
          result
        when 45 # ?-
          -result
        else
          raise FormatError, "Unexpected sign for Bignum #{b.sign.chr.inspect} (#{b.sign})"
        end
      end

      def visit_Gem_SafeMarshal_Elements_UserClass(r)
        if resolve_class(r.name) == ::Hash && r.wrapped_object.is_a?(Elements::Hash)

          hash = register_object({}.compare_by_identity)

          o = r.wrapped_object
          o.pairs.each_with_index do |(k, v), i|
            push_stack i
            k = visit(k)
            push_stack k
            hash[k] = visit(v)
          end

          if o.is_a?(Elements::HashWithDefaultValue)
            push_stack :default

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. The metadata bignum is malformed; the file is corrupt — re-download the gem

When it happens

Trigger: Thrown at lib/rubygems/safe_marshal/visitors/to_ruby.rb:260 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/230f2c532c46772d. Report an issue: GitHub.