问题描述
所以这次崩溃已经成为我存在的祸根 3 个月了。
Google 单枪匹马地将我们置于“不良行为”阈值之上。我从来没有亲身经历过,我只知道我们每个月有数百名用户因这次崩溃而受到影响。
崩溃发生在 libGLESv2_adreno 内部,libGLESv2_adreno 是一个 libGLESv2_adreno,它为在 Adreno GPU 上运行的嵌入式系统提供 OpenGL。
因此,它只影响带有 Adreno GPU 的 Android 9 设备,这里有一些违规者:
- 三星 galaxy S8
- LGE LG Stylo 5
- LGE LG G7 ThinQ
- 摩托罗拉 Moto Z(3)
- 配备蓝宝石防护罩的京瓷 DuraForce PRO 2
这是一个使用 MapBoxGL 的 React Native 项目。事实上,我什至在这里发现了同样的问题: https://github.com/mapbox/mapbox-gl-native-android/issues/264
遗憾的是,这不是我们使用的包..这是我们使用的: https://github.com/react-native-mapbox-gl/maps
而且我也不知道这是一个 mapBox 问题,这个回溯中确实没有任何线索:
signal 11 (SIGSEGV),code 1 (SEGV_MAPERR)
backtrace:
#00 pc 000000000012ae70 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxFramebufferObject::DetachAll(EsxContext*)+56)
#00 pc 00000000001fda4c /system/vendor/lib64/egl/libGLESv2_adreno.so (EglContext::UnmakeCurrentEsx()+308)
#00 pc 00000000001fd8c0 /system/vendor/lib64/egl/libGLESv2_adreno.so (EglContext::UnmakeCurrent()+128)
#00 pc 00000000001fe888 /system/vendor/lib64/egl/libGLESv2_adreno.so (EglThreadList::SearchCurrentdisplayAndUnmake(Egldisplay*)+224)
#00 pc 00000000001fe468 /system/vendor/lib64/egl/libGLESv2_adreno.so (Egldisplay::Terminate(int)+168)
#00 pc 00000000001f4864 /system/vendor/lib64/egl/libGLESv2_adreno.so (EglApi::Terminate(void*)+84)
#00 pc 000000000001115c /system/lib64/libEGL.so (android::egl_display_t::terminate()+128)
#00 pc 000000000006f9a8 /system/lib64/libgui.so (android::GLConsumer::EglImage::~EglImage()+80)
#00 pc 000000000006f7ec /system/lib64/libgui.so (android::GLConsumer::abandonLocked()+68)
#00 pc 0000000000065ad0 /system/lib64/libgui.so (android::ConsumerBase::onLastStrongRef(void const*)+48)
#00 pc 00000000001687bc /system/lib64/libandroid_runtime.so (android::SurfaceTexture_release(_jnienv*,_jobject*)+80)
#00 pc 000000000042982c /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.graphics.Camera.nativeConstructor [DEDUPED]+124)
#00 pc 000000000088eb58 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.graphics.SurfaceTexture.release+40)
#00 pc 0000000000d995dc /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.TextureView.releaseSurfaceTexture+252)
#00 pc 0000000000d9a048 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.TextureView.onDetachedFromWindowInternal+248)
#00 pc 0000000000cd1c20 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.View.dispatchDetachedFromWindow+192)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000da12c0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewGroup.dispatchDetachedFromWindow+240)
#00 pc 0000000000d04f0c /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewRootImpl.dispatchDetachedFromWindow+188)
#00 pc 0000000000d05884 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewRootImpl.doDie+180)
#00 pc 0000000000d049b4 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.ViewRootImpl.die+68)
#00 pc 0000000000c0c50c /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.WindowManagerGlobal.removeViewLocked+316)
#00 pc 0000000000c0da4c /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.WindowManagerGlobal.removeView+220)
#00 pc 0000000000dad9e4 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.view.WindowManagerImpl.removeViewImmediate+68)
#00 pc 000000000090996c /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.ActivityThread.handleDestroyActivity+316)
#00 pc 0000000000af9468 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.servertransaction.DestroyActivityItem.execute+136)
#00 pc 00000000008134a0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.servertransaction.TransactionExecutor.executeLifecycleState+416)
#00 pc 0000000000813b30 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.servertransaction.TransactionExecutor.execute+304)
#00 pc 00000000008f6a78 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.ActivityThread$H.handleMessage+1112)
#00 pc 0000000000b26a94 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.os.Handler.dispatchMessage+180)
#00 pc 0000000000b29b90 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.os.Looper.loop+1264)
#00 pc 0000000000903948 /system/framework/arm64/boot-framework.oat (offset 0x420000) (android.app.ActivityThread.main+680)
#00 pc 000000000055844c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
#00 pc 00000000000cfce8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*,unsigned int*,unsigned int,art::JValue*,char const*)+232)
#00 pc 000000000045e630 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedobjectAccessAlreadyRunnable const&,art::ArtMethod*,art::(anonymous namespace)::ArgArray*,char const*)+104)
#00 pc 0000000000460084 /system/lib64/libart.so (art::InvokeMethod(art::ScopedobjectAccessAlreadyRunnable const&,_jobject*,unsigned long)+1440)
#00 pc 00000000003ef520 /system/lib64/libart.so (art::Method_invoke(_jnienv*,_jobjectArray*)+52)
#00 pc 000000000011f7e4 /system/framework/arm64/boot.oat (offset 0x115000) (java.lang.class.getDeclaredMethodInternal [DEDUPED]+180)
#00 pc 0000000000e11f08 /system/framework/arm64/boot-framework.oat (offset 0x420000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
#00 pc 0000000000e18aa0 /system/framework/arm64/boot-framework.oat (offset 0x420000) (com.android.internal.os.ZygoteInit.main+2208)
#00 pc 000000000055844c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
#00 pc 00000000000cfce8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*,char const*)+104)
#00 pc 000000000045e290 /system/lib64/libart.so (art::InvokeWithVarargs(art::ScopedobjectAccessAlreadyRunnable const&,_jmethodID*,std::__va_list)+424)
#00 pc 0000000000362d8c /system/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_jnienv*,_jclass*,std::__va_list)+652)
#00 pc 00000000000b934c /system/lib64/libandroid_runtime.so (_jnienv::CallStaticVoidMethod(_jclass*,...)+116)
#00 pc 00000000000bbfa4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*,android::Vector<android::String8> const&,bool)+768)
#00 pc 0000000000004b84 /system/bin/app_process64 (main+1832)
#00 pc 00000000000c9ec8 /system/lib64/libc.so (__libc_init+88)
有人特别擅长阅读神秘的回溯来确定问题的根源吗? 关于如何更好地调试它有什么建议吗?
如果有办法对上面的代码进行去符号化,我会很高兴,但我认为这需要 GPU lib 符号文件.. 也许我错了..
非常感谢!
更新: 此问题仍在继续(它仍会出现在 Sentry 中),但现在 Google Play Console 已将其过滤掉,因此我们的应用现在低于不良行为标记。我最好的猜测是,Google 决定不因 GPU 级别的问题而惩罚应用?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)