android OpenSSLSessionImpl完成SEGV_MAPERR崩溃

时间:2018-07-24 13:18:20

标签: android openssl java-native-interface okhttp

最近我们从下至上重写了我们的Android应用程序(包含大量的Java和本机代码),也许更改了一些本机库的初始化顺序;

我们使用OkHttp作为我们的网络库。

OkHttp版本:3.10.0.1

OkHttpClient

    OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.MILLISECONDS);
builder.readTimeout(IO_TIMEOUT, TimeUnit.MILLISECONDS);
builder.writeTimeout(IO_TIMEOUT, TimeUnit.MILLISECONDS);
builder.addInterceptor(new OkHttpRequestInterceptor());
builder.dns(dns);
if (ToolUtils.isMainProcess(context)) {
    builder.cookieJar(new CustomedCookieJar(CookieHandler.getDefault()));
}
builder.followRedirects(true);
return builder.build();

从旧版本升级到重构版本的人们可能会遇到OpenSSLSessionImpl崩溃,(影响5%的用户)

我们的几个人花了几个星期才能解决该错误,但都失败了。

下面是一些OpenSSLSessionImpl崩溃堆栈

SIGSEGV(SEGV_MAPERR)


1 #00 pc 0003de92 /system/lib/libcrypto.so [armeabi-v7a]
2 #01 pc 0003deed /system/lib/libcrypto.so [armeabi-v7a]
3 #02 pc 0003dd1d /system/lib/libcrypto.so [armeabi-v7a]
4 #03 pc 0003dd1d /system/lib/libcrypto.so [armeabi-v7a]
5 #04 pc 0003dc59 /system/lib/libcrypto.so (ASN1_item_free+20) [armeabi-v7a]
6 #05 pc 0007122f /system/lib/libcrypto.so (sk_pop_free+22) [armeabi-v7a]
7 #06 pc 0001c02b /system/lib/libssl.so (SSL_SESSION_free+66) [armeabi-v7a]
8 #07 pc 00083b0d /system/framework/arm/boot-conscrypt.oat (oatexec+64269) [armeabi]
9 java:
10 com.android.org.conscrypt.OpenSSLSessionImpl.finalize(OpenSSLSessionImpl.java:486)
11 java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:222)
12 java.lang.Daemons$FinalizerDaemon.run(Daemons.java:209)
13 java.lang.Thread.run(Thread.java:760)

    1   #00 pc 0005f9aa /system/lib/libcrypto.so (sk_free+5) [armeabi-v7a]
2   #01 pc 0001751f /system/lib/libssl.so [armeabi-v7a]
3   #02 pc 0001831f /system/lib/libssl.so (SSL_free+82) [armeabi-v7a]
4   #03 pc 024f90a5 /data/dalvik-cache/arm/system@framework@boot.oat (oatexec+2674853) [armeabi]
5   java:
6   com.android.org.conscrypt.OpenSSLSocketImpl.free(OpenSSLSocketImpl.java:1163)
7   com.android.org.conscrypt.OpenSSLSocketImpl.shutdownAndFreeSslNative(OpenSSLSocketImpl.java:1142)
8   com.android.org.conscrypt.OpenSSLSocketImpl.close(OpenSSLSocketImpl.java:1126)
9   okhttp3.internal.c.closeQuietly(Util.java:125)
10  okhttp3.internal.connection.c.b(RealConnection.java:347)
11  okhttp3.internal.connection.c.a(RealConnection.java:274)
12  okhttp3.internal.connection.c.connect(RealConnection.java:162)
13  okhttp3.internal.connection.f.a(StreamAllocation.java:258)
14  okhttp3.internal.connection.f.a(StreamAllocation.java:136)
15  okhttp3.internal.connection.f.newStream(StreamAllocation.java:115)
16  okhttp3.internal.connection.a.intercept(ConnectInterceptor.java:42)
17  okhttp3.internal.b.g.proceed(RealInterceptorChain.java:147)
18  okhttp3.internal.b.g.proceed(RealInterceptorChain.java:121)
19  okhttp3.internal.a.a.intercept(CacheInterceptor.java:93)
20  okhttp3.internal.b.g.proceed(RealInterceptorChain.java:147)

这种崩溃不针对任何特定的Android版本(从4到8)和任何android设备(多个android制造商);

如崩溃报告所示,平均每个用户可能会遇到1次,我们现在尚未重用它,并且不了解会导致这种情况的原因,因此没有代码段。

任何哥们都有一些线索吗?还是以前要面对这种情况。

预先感谢;

0 个答案:

没有答案