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
- Retry the install — a concurrently inserted provider may have taken position 1
- Remove conflicting manually inserted security providers before installing
- 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.