microg/GmsCore · error · SecurityException

Failed to install security provider , result:

Error message

Failed to install security provider , result: 

What it means

Status failure in ProviderInstallerImpl.insertProvider: Security.insertProviderAt did not return position 1 after inserting the Conscrypt provider, so the upgraded security provider was not installed at the top of the provider list. The provider name and result code are appended; it signals a failed installation, not bad input.

Source

Thrown at play-services-conscrypt-provider-core/src/main/java/com/google/android/gms/providerinstaller/ProviderInstallerImpl.java:95

                initProvider(context, packageName);

                if (provider == null) {
                    Log.w(TAG, "Failed to initialize Conscrypt");
                    return;
                }

                int res = Security.insertProviderAt(provider, 1);
                if (res == 1) {
                    Security.setProperty("ssl.SocketFactory.provider", "com.google.android.gms.org.conscrypt.OpenSSLSocketFactoryImpl");
                    Security.setProperty("ssl.ServerSocketFactory.provider", "com.google.android.gms.org.conscrypt.OpenSSLServerSocketFactoryImpl");

                    SSLContext sslContext = SSLContext.getInstance("Default");
                    SSLContext.setDefault(sslContext);
                    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

                    Log.d(TAG, "Installed default security provider " + PROVIDER_NAME);
                } else {
                    throw new SecurityException("Failed to install security provider " + PROVIDER_NAME + ", result: " + res);
                }
            }
        } catch (Throwable e) {
            Log.w(TAG, e);
        }
    }

    @Keep
    public static void reportRequestStats(Context context, long elapsedRealtimeBeforeLoad, long elapsedRealtimeAfterLoad) {
        Log.d(TAG, "reportRequestStats: " + elapsedRealtimeBeforeLoad + " " + elapsedRealtimeAfterLoad);
        // Ignore stats
    }

    private static void initProvider(Context context, String packageName) {
        Log.d(TAG, "Initializing provider for " + packageName);

        try {
            provider = Conscrypt.newProviderBuilder().setName(PROVIDER_NAME).defaultTlsProtocol("TLSv1.3").build();

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Retry the install — a concurrently inserted provider may have taken position 1
  2. Remove conflicting manually inserted security providers before installing
  3. Fall back to the device's existing TLS stack and verify the provider actually in use
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at play-services-conscrypt-provider-core/src/main/java/com/google/android/gms/providerinstaller/ProviderInstallerImpl.java:95 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/dae6570c466e2eda. Report an issue: GitHub.