firebase-android-sdk: Crash in Android 7 and 8 with FirebaseInstallations

Step 2: Describe your environment

  • Android Studio version: 4.0.0
  • Firebase Component: Might be any of Firebase performance, config, messaging dynamic links or analytics
  • Component version: Following the order of the last sentence: 19.0.7, 19.1.4, 20.2.0, 19.1.0 and 17.4.2

Step 3:

Getting a crash in both Android 8 and 7 with the following message in crashlytics:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.android.org.conscrypt.SSLParametersImpl.clone()' on a null object reference

Steps to reproduce:

Full stacktrace:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.android.org.conscrypt.SSLParametersImpl.clone()' on a null object reference
       at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:106)
       at com.android.okhttp.Connection.connectTls(Connection.java:1494)
       at com.android.okhttp.Connection.connectSocket(Connection.java:1458)
       at com.android.okhttp.Connection.connect(Connection.java:1413)
       at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1700)
       at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:133)
       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:466)
       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:371)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:503)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:130)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:261)
       at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
       at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java)
       at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeRequestBodyToOutputStream(FirebaseInstallationServiceClient.java:208)
       at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeFIDCreateRequestBodyToOutputStream(FirebaseInstallationServiceClient.java:190)
       at com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation(FirebaseInstallationServiceClient.java:160)
       at com.google.firebase.installations.FirebaseInstallations.registerFidWithServer(FirebaseInstallations.java:464)
       at com.google.firebase.installations.FirebaseInstallations.doNetworkCall(FirebaseInstallations.java:341)
       at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0(FirebaseInstallations.java:331)
       at com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run(FirebaseInstallations.java)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:762)

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 25 (11 by maintainers)

Most upvoted comments

@ankitaj224 Alas. We can’t reproduce it locally. I can only see these crash reports in console.

Hello @ankitaj224, no problem at all! I can confirm that we have 16.3.1 for firebase-installations and also just in case we are having 16.0.0 of firebase-installations-interop. Unfortunately I couldn’t reproduce it in my side. The only exception I see that most likely is not related is this one for crashlytics:

Caused by: java.net.SocketTimeoutException: failed to connect to settings.crashlytics.com/172.217.168.195 (port 443) from /192.168.1.103 (port 50248) after 10000ms
        at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
        at libcore.io.IoBridge.connect(IoBridge.java:129)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:391)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:231)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:213)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:26)
        at com.google.firebase.perf.network.zzf.getResponseCode(Unknown Source:81)
        at com.google.firebase.perf.network.zzc.getResponseCode(Unknown Source:15)

Would you confirm me that this is not related? Anything else or other info I can provide?

We have the same crashes in our project after update to the last Firebase versions. firebase-analytics 17.3.0 -> 17.4.3 firebase-crashlytics 17.0.0-beta03 -> 17.0.1

Stacktrace 1:

com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:106)
com.android.okhttp.Connection.connectTls (Connection.java:224)
com.android.okhttp.Connection.connectSocket (Connection.java:199)
com.android.okhttp.Connection.connect (Connection.java:172)
com.android.okhttp.Connection.connectAndSetOwner (Connection.java:367)
com.android.okhttp.OkHttpClient$1.connectAndSetOwner (OkHttpClient.java:130)
com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:330)
com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:247)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:457)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:126)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream (HttpURLConnectionImpl.java:257)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream (DelegatingHttpsURLConnection.java:218)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeFIDCreateRequestBodyToOutputStream (FirebaseInstallationServiceClient.java:180)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation (FirebaseInstallationServiceClient.java:154)
com.google.firebase.installations.FirebaseInstallations.registerFidWithServer (FirebaseInstallations.java:433)
com.google.firebase.installations.FirebaseInstallations.doNetworkCall (FirebaseInstallations.java:333)
com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0 (FirebaseInstallations.java:323)
com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run (FirebaseInstallations.java)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
java.lang.Thread.run (Thread.java:760)

Devices 1: Android 6.X, 7.X, 8.0

Stacktrace 2:

com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:135)
com.android.okhttp.internal.io.RealConnection.connectTls (RealConnection.java:1463)
com.android.okhttp.internal.io.RealConnection.connectSocket (RealConnection.java:1423)
com.android.okhttp.internal.io.RealConnection.connect (RealConnection.java:1367)
com.android.okhttp.internal.http.StreamAllocation.findConnection (StreamAllocation.java:219)
com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection (StreamAllocation.java:142)
com.android.okhttp.internal.http.StreamAllocation.newStream (StreamAllocation.java:104)
com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:410)
com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:343)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:489)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:131)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream (HttpURLConnectionImpl.java:262)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream (DelegatingHttpsURLConnection.java:218)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeFIDCreateRequestBodyToOutputStream (FirebaseInstallationServiceClient.java:180)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation (FirebaseInstallationServiceClient.java:154)
com.google.firebase.installations.FirebaseInstallations.registerFidWithServer (FirebaseInstallations.java:433)
com.google.firebase.installations.FirebaseInstallations.doNetworkCall (FirebaseInstallations.java:333)
com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0 (FirebaseInstallations.java:323)
com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run (FirebaseInstallations.java:4)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
java.lang.Thread.run (Thread.java:764)

Devices 2: Only Android 8.0

Stacktrace 3:

com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:102)
com.android.okhttp.internal.http.SocketConnector.connectTls (SocketConnector.java:89)
com.android.okhttp.Connection.connect (Connection.java:143)
com.android.okhttp.Connection.connectAndSetOwner (Connection.java:185)
com.android.okhttp.OkHttpClient$1.connectAndSetOwner (OkHttpClient.java:128)
com.android.okhttp.internal.http.HttpEngine.nextConnection (HttpEngine.java:342)
com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:331)
com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:249)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:437)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:114)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream (HttpURLConnectionImpl.java:245)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream (DelegatingHttpsURLConnection.java:218)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java:25)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeFIDCreateRequestBodyToOutputStream (FirebaseInstallationServiceClient.java:180)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation (FirebaseInstallationServiceClient.java:154)
com.google.firebase.installations.FirebaseInstallations.registerFidWithServer (FirebaseInstallations.java:433)
com.google.firebase.installations.FirebaseInstallations.doNetworkCall (FirebaseInstallations.java:333)
com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0 (FirebaseInstallations.java:323)
com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run (FirebaseInstallations.java)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588)
java.lang.Thread.run (Thread.java:818)

Devices 3: Android 5.X, 6.X

Stacktrace 4:

com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:153)
com.android.okhttp.internal.io.RealConnection.connectTls (RealConnection.java:181)
com.android.okhttp.internal.io.RealConnection.connectSocket (RealConnection.java:149)
com.android.okhttp.internal.io.RealConnection.connect (RealConnection.java:112)
com.android.okhttp.internal.http.StreamAllocation.findConnection (StreamAllocation.java:184)
com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection (StreamAllocation.java:126)
com.android.okhttp.internal.http.StreamAllocation.newStream (StreamAllocation.java:95)
com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:281)
com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:224)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:461)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:127)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream (HttpURLConnectionImpl.java:258)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream (DelegatingHttpsURLConnection.java:218)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java:26)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.writeFIDCreateRequestBodyToOutputStream (FirebaseInstallationServiceClient.java:180)
com.google.firebase.installations.remote.FirebaseInstallationServiceClient.createFirebaseInstallation (FirebaseInstallationServiceClient.java:154)
com.google.firebase.installations.FirebaseInstallations.registerFidWithServer (FirebaseInstallations.java:433)
com.google.firebase.installations.FirebaseInstallations.doNetworkCall (FirebaseInstallations.java:333)
com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0 (FirebaseInstallations.java:323)
com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run (FirebaseInstallations.java:4)
java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1187)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
java.lang.Thread.run (Thread.java:784)

Devices 4: Only Android 9

@ashwinraghav We have had this crash roughly around 90 times in 5 days. Just so you know I just noticed it happening in Android 6 as well, so my thoughts about having it only in Android 7 and 8 can be dismissed.

@ciarand We do not see a pattern for a certain brand. If I take android 8 cases for example, 68% happens on Samsung devices but the remaining 32% is quite spread.