From 6caec9d91fe71bcd80d670218d752c4f251bde81 Mon Sep 17 00:00:00 2001 From: Agastya Darma Date: Thu, 8 Jul 2021 12:39:36 -0700 Subject: [PATCH] Android: upgrading to OkHttp from 4.9.0 to 4.9.1 to fix java.lang.NullPointerException: bio == null crash (#31822) Summary: Douring our routine crash report check we are occasionally seeing reports of exceptions like this in the wild from our crash stack: ``` java.lang.NullPointerException: bio == null at com.android.org.conscrypt.NativeCrypto.SSL_pending_written_bytes_in_BIO(NativeCrypto.java) at com.android.org.conscrypt.NativeSsl$BioWrapper.getPendingWrittenBytes(NativeSsl.java:660) at com.android.org.conscrypt.ConscryptEngine.pendingOutboundEncryptedBytes(ConscryptEngine.java:566) at com.android.org.conscrypt.ConscryptEngineSocket.drainOutgoingQueue(ConscryptEngineSocket.java:584) at com.android.org.conscrypt.ConscryptEngineSocket.close(ConscryptEngineSocket.java:480) at okhttp3.internal.Util.closeQuietly(Util.kt:501) at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFile:245) at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFile:106) at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFile:74) at okhttp3.internal.connection.RealCall.initExchange$okhttp(ExchangeFile:255) at okhttp3.internal.connection.ConnectInterceptor.intercept(ExchangeFile:32) ... ``` ![Screen Shot 2021-07-07 at 1 38 23 PM](https://user-images.githubusercontent.com/8868908/124711795-b5fee980-df28-11eb-98c4-9668661340b6.png) This appears to only be happening on devices running Android 10 and 11. This happens because there is concurrency issue in Conscrypt where two threads race to close an SSLEngine-based SSLSocket and access to the underlying BIO is unsynchronized. **The OkHttp team already released a fix for this issue on version 4.9.1** this PR aims to update our OkHttp package to version 4.9.1. Related discussion: [https://issuetracker.google.com/issues/177450597](https://issuetracker.google.com/issues/177450597) [https://publicobject.com/2021/01/30/bio-null/](https://publicobject.com/2021/01/30/bio-null/) cc dulmandakh fkgozali ## Changelog [Android] [Changed] - Bumping OkHttp from 4.9.0 to 4.9.1. Pull Request resolved: https://github.com/facebook/react-native/pull/31822 Test Plan: Manual & Automated from CI Reviewed By: fkgozali Differential Revision: D29590198 Pulled By: ShikaSD fbshipit-source-id: 4228bfd3472114253e13acb436dc1dd9287a148d --- ReactAndroid/gradle.properties | 2 +- ReactAndroid/src/main/third-party/java/okhttp/BUCK | 8 ++++---- ReactAndroid/src/main/third-party/java/okio/BUCK | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ReactAndroid/gradle.properties b/ReactAndroid/gradle.properties index fc55c4075f..dca4718bba 100644 --- a/ReactAndroid/gradle.properties +++ b/ReactAndroid/gradle.properties @@ -12,7 +12,7 @@ JUNIT_VERSION=4.12 ANDROIDX_TEST_VERSION=1.1.0 FRESCO_VERSION=2.5.0 -OKHTTP_VERSION=4.9.0 +OKHTTP_VERSION=4.9.1 SO_LOADER_VERSION=0.10.1 BOOST_VERSION=1_63_0 diff --git a/ReactAndroid/src/main/third-party/java/okhttp/BUCK b/ReactAndroid/src/main/third-party/java/okhttp/BUCK index 4a825c0074..6281304987 100644 --- a/ReactAndroid/src/main/third-party/java/okhttp/BUCK +++ b/ReactAndroid/src/main/third-party/java/okhttp/BUCK @@ -30,8 +30,8 @@ rn_prebuilt_jar( fb_native.remote_file( name = "okhttp3-binary.jar", - sha1 = "08e17601d3bdc8cf57902c154de021931d2c27c1", - url = "mvn:com.squareup.okhttp3:okhttp:jar:4.9.0", + sha1 = "51215279c3fe472c59b6b7dd7491e6ac2e28a81b", + url = "mvn:com.squareup.okhttp3:okhttp:jar:4.9.1", ) rn_prebuilt_jar( @@ -41,6 +41,6 @@ rn_prebuilt_jar( fb_native.remote_file( name = "okhttp3-urlconnection-binary.jar", - sha1 = "94f82aaabdf53e48d7a1c515bf89ce60dcebfbeb", - url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:4.9.0", + sha1 = "f45e809215bd0961350148cf5b78707865084e6f", + url = "mvn:com.squareup.okhttp3:okhttp-urlconnection:jar:4.9.1", ) diff --git a/ReactAndroid/src/main/third-party/java/okio/BUCK b/ReactAndroid/src/main/third-party/java/okio/BUCK index c8b65998b2..9f5ff9a60a 100644 --- a/ReactAndroid/src/main/third-party/java/okio/BUCK +++ b/ReactAndroid/src/main/third-party/java/okio/BUCK @@ -19,6 +19,6 @@ rn_prebuilt_jar( fb_native.remote_file( name = "okio-binary.jar", - sha1 = "0dcc813b08ce5933f8bdfd1dfbab4ad4bd170e7a", - url = "mvn:com.squareup.okio:okio:jar:2.9.0", + sha1 = "accaddddbb597fb70290fd40358b1ce66b8c2b3d", + url = "mvn:com.squareup.okio:okio:jar:2.10.0", )