{"record":{"id":"fcff44ff0cd047de","repo":"microg/GmsCore","slug":"autosafeparcelable-findcreator-invoked-with-non","errorCode":null,"errorMessage":"AutoSafeParcelable.findCreator() invoked with non-AutoSafeParcelable","messagePattern":"AutoSafeParcelable\\.findCreator\\(\\) invoked with non-AutoSafeParcelable","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"play-services-basement/src/main/java/org/microg/safeparcel/AutoSafeParcelable.java","lineNumber":37,"sourceCode":"    public void writeToParcel(Parcel dest, int flags) {\n        Creator<Parcelable> creator = SafeParcelReflectionUtil.getCreator(this.getClass());\n        if (creator instanceof SafeParcelableCreatorAndWriter) {\n            ((SafeParcelableCreatorAndWriter<AutoSafeParcelable>) (SafeParcelableCreatorAndWriter<?>) creator).writeToParcel(this, dest, flags);\n        } else {\n            Log.w(TAG, \"AutoSafeParcelable is not using SafeParcelableCreatorAndWriter\");\n            SafeParcelReflectionUtil.writeObject(this, dest, flags);\n        }\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T extends AbstractSafeParcelable> SafeParcelableCreatorAndWriter<T> findCreator(java.lang.Class<T> tClass) {\n        try {\n            return AbstractSafeParcelable.findCreator(tClass);\n        } catch (Exception e) {\n            if (AutoSafeParcelable.class.isAssignableFrom(tClass)) {\n                return (SafeParcelableCreatorAndWriter<T>) new AutoCreator<>((java.lang.Class<AutoSafeParcelable>) tClass);\n            } else {\n                throw new RuntimeException(\"AutoSafeParcelable.findCreator() invoked with non-AutoSafeParcelable\");\n            }\n        }\n    }\n\n    @Deprecated\n    public static class AutoCreator<T extends AutoSafeParcelable> extends ReflectedSafeParcelableCreatorAndWriter<T> {\n        public AutoCreator(java.lang.Class<T> tClass) {\n            super(tClass);\n        }\n    }\n}","sourceCodeStart":19,"sourceCodeEnd":48,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-basement/src/main/java/org/microg/safeparcel/AutoSafeParcelable.java#L19-L48","documentation":"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.","triggerScenarios":"Thrown at play-services-basement/src/main/java/org/microg/safeparcel/AutoSafeParcelable.java:37 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the type passed to findCreator() extends AutoSafeParcelable","Use the class's own explicit CREATOR instead of the reflective helper"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}