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

Attempting to set unpermitted ivar #{symbol.inspect} on obje

Error message

Attempting to set unpermitted ivar #{symbol.inspect} on object of class #{klass} @ #{stack.join(".")}

What it means

Error "Attempting to set unpermitted ivar #{symbol.inspect} on object of class #{klass} @ #{stack.join(".")}" thrown in ruby/rubygems.

Source

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

      class RationalCompat
        def marshal_load(s)
          num, den = s
          raise ArgumentError, "Expected 2 ints" unless s.size == 2 && num.is_a?(Integer) && den.is_a?(Integer)
          Rational(num, den)
        end
      end
      private_constant :RationalCompat

      COMPAT_CLASSES = {}.tap do |h|
        h[Rational] = RationalCompat
      end.compare_by_identity.freeze
      private_constant :COMPAT_CLASSES

      def resolve_ivar(klass, name)
        to_s = resolve_symbol_name(name)

        raise UnpermittedIvarError.new(symbol: to_s, klass: klass, stack: formatted_stack) unless @permitted_ivars.fetch(klass.name, [].freeze).include?(to_s)

        visit_symbol_type(name)
      end

      def visit_symbol_type(element)
        case element
        when Elements::Symbol
          sym = element.name.to_sym
          @symbols << sym
          sym
        when Elements::SymbolLink
          visit_Gem_SafeMarshal_Elements_SymbolLink(element)
        end
      end

      # This is a hot method, so avoid respond_to? checks on every invocation
      if :read.respond_to?(:name)
        def resolve_symbol_name(element)

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. Do not install the gem: its metadata tries to set a non-permitted instance variable
  2. Fetch from the official source and report the package

When it happens

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