S9/S9+ 特定的 WebView 设备崩溃报告
S9/S9+ specific WebView device crash report
我们一直在 Google Play 中看到特定于三星 S9 (starqlesq) 和 S9+ (star2qlesq) 的崩溃报告,两者都是 运行 Android 8.0.0:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
backtrace:
#00 pc 0000000000a51278 /vendor/lib64/libllvm-glnext.so (_ZN13ShaderObjects17loadProgramBinaryEP15CompilerContextPvmP23QGLC_LINKPROGRAM_RESULT+1396)
#01 pc 000000000099b500 /vendor/lib64/libllvm-glnext.so (_ZN15CompilerContext17loadProgramBinaryEPvmP23QGLC_LINKPROGRAM_RESULT+160)
#02 pc 0000000000a6e110 /vendor/lib64/libllvm-glnext.so (_Z21QGLCLoadProgramBinaryPvS_mP23QGLC_LINKPROGRAM_RESULT+88)
#03 pc 00000000001a501c /vendor/lib64/egl/libGLESv2_adreno.so (_ZN17EsxShaderCompiler21LoadProgramBinaryBlobEP10EsxContextP10EsxProgramPKvmP10EsxInfoLog+256)
查看上面的堆栈跟踪,崩溃似乎发生在 OpenGL 系统代码中。
这很奇怪,因为我们集成了崩溃报告解决方案(Microsoft App Center SDK),其他崩溃报告将发送到 App Center。
我们的应用程序大量使用了 WebView
,据我所知,它现在在单独的进程中使用 Chrome、运行。
因此我的问题是:
- 此崩溃报告将 Google 播放而不是 App Center 是否表示
WebView
相关崩溃?
- 什么样的事情会导致这样的崩溃?到目前为止,它影响了 3 个唯一用户,因此它似乎并不是特定于具有异常设备配置的单个用户。
- 哪些操作最有效地缩小和解决问题的范围?
现已确认禁用硬件加速可以解决这些有问题的设备上的问题:
val product = Build.PRODUCT
val s9ProductsThatNeedWorkaround = arrayOf("starqltesq", "star2qltesq", "starqlteue", "star2qlteue")
if (s9ProductsThatNeedWorkaround.contains(product)) {
WebView.setLayerType(LAYER_TYPE_SOFTWARE)
}
然而,在渲染 Web 内容时可能会出现一些外观异常。
我们一直在 Google Play 中看到特定于三星 S9 (starqlesq) 和 S9+ (star2qlesq) 的崩溃报告,两者都是 运行 Android 8.0.0:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
backtrace:
#00 pc 0000000000a51278 /vendor/lib64/libllvm-glnext.so (_ZN13ShaderObjects17loadProgramBinaryEP15CompilerContextPvmP23QGLC_LINKPROGRAM_RESULT+1396)
#01 pc 000000000099b500 /vendor/lib64/libllvm-glnext.so (_ZN15CompilerContext17loadProgramBinaryEPvmP23QGLC_LINKPROGRAM_RESULT+160)
#02 pc 0000000000a6e110 /vendor/lib64/libllvm-glnext.so (_Z21QGLCLoadProgramBinaryPvS_mP23QGLC_LINKPROGRAM_RESULT+88)
#03 pc 00000000001a501c /vendor/lib64/egl/libGLESv2_adreno.so (_ZN17EsxShaderCompiler21LoadProgramBinaryBlobEP10EsxContextP10EsxProgramPKvmP10EsxInfoLog+256)
查看上面的堆栈跟踪,崩溃似乎发生在 OpenGL 系统代码中。
这很奇怪,因为我们集成了崩溃报告解决方案(Microsoft App Center SDK),其他崩溃报告将发送到 App Center。
我们的应用程序大量使用了 WebView
,据我所知,它现在在单独的进程中使用 Chrome、运行。
因此我的问题是:
- 此崩溃报告将 Google 播放而不是 App Center 是否表示
WebView
相关崩溃? - 什么样的事情会导致这样的崩溃?到目前为止,它影响了 3 个唯一用户,因此它似乎并不是特定于具有异常设备配置的单个用户。
- 哪些操作最有效地缩小和解决问题的范围?
现已确认禁用硬件加速可以解决这些有问题的设备上的问题:
val product = Build.PRODUCT
val s9ProductsThatNeedWorkaround = arrayOf("starqltesq", "star2qltesq", "starqlteue", "star2qlteue")
if (s9ProductsThatNeedWorkaround.contains(product)) {
WebView.setLayerType(LAYER_TYPE_SOFTWARE)
}
然而,在渲染 Web 内容时可能会出现一些外观异常。