microg/GmsCore · error · RuntimeException

AutoSafeParcelable.findCreator() invoked with…

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.

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.

Appendix: 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)