microg/GmsCore · error · RuntimeException

AutoSafeParcelable.findCreator() invoked with non-AutoSafePa

Error message

AutoSafeParcelable.findCreator() invoked with non-AutoSafeParcelable

What it means

Sentinel guard in AutoSafeParcelable.findCreator(): the class passed to the reflective CREATOR lookup is not an AutoSafeParcelable subclass, so SafeParcel reflection cannot proceed. It signals misuse of the reflection helper with an incompatible type, not a data problem.

Source

Thrown at play-services-basement/src/main/java/org/microg/safeparcel/AutoSafeParcelable.java:37

    public void writeToParcel(Parcel dest, int flags) {
        Creator<Parcelable> creator = SafeParcelReflectionUtil.getCreator(this.getClass());
        if (creator instanceof SafeParcelableCreatorAndWriter) {
            ((SafeParcelableCreatorAndWriter<AutoSafeParcelable>) (SafeParcelableCreatorAndWriter<?>) creator).writeToParcel(this, dest, flags);
        } else {
            Log.w(TAG, "AutoSafeParcelable is not using SafeParcelableCreatorAndWriter");
            SafeParcelReflectionUtil.writeObject(this, dest, flags);
        }
    }

    @SuppressWarnings("unchecked")
    public static <T extends AbstractSafeParcelable> SafeParcelableCreatorAndWriter<T> findCreator(java.lang.Class<T> tClass) {
        try {
            return AbstractSafeParcelable.findCreator(tClass);
        } catch (Exception e) {
            if (AutoSafeParcelable.class.isAssignableFrom(tClass)) {
                return (SafeParcelableCreatorAndWriter<T>) new AutoCreator<>((java.lang.Class<AutoSafeParcelable>) tClass);
            } else {
                throw new RuntimeException("AutoSafeParcelable.findCreator() invoked with non-AutoSafeParcelable");
            }
        }
    }

    @Deprecated
    public static class AutoCreator<T extends AutoSafeParcelable> extends ReflectedSafeParcelableCreatorAndWriter<T> {
        public AutoCreator(java.lang.Class<T> tClass) {
            super(tClass);
        }
    }
}

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Ensure the type passed to findCreator() extends AutoSafeParcelable
  2. Use the class's own explicit CREATOR instead of the reflective helper
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at play-services-basement/src/main/java/org/microg/safeparcel/AutoSafeParcelable.java:37 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/fcff44ff0cd047de. Report an issue: GitHub.