We are developing an app with Unity with an extensive use of WebView. To be more specific we use the UniWebView asset from @onevcat. We suffer a lot of crashes on Android (~5% of all users). Below are the distribution of Android versions and some stacktraces from Google Play console.
Tried Unity versions: 2020.3.18, 2020.3.34, 2020.3.41.
Tried these UniWebView versions: 4.10.3, 4.12.1, 5.0.2.
Thanks for any help!
1:
backtrace:
#00 pc 0x0000000004bc6430 /data/app/com.google.android.webview-VW-FM4suXLpE5O_oTkAtPw==/base.apk!libmonochrome.so
2:
backtrace:
#00 pc 0x000000000303919a /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#01 pc 0x0000000003202e6b /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#02 pc 0x0000000003203323 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#03 pc 0x00000000031f1ea5 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#04 pc 0x0000000002d53f7f /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#05 pc 0x0000000002d53d31 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#06 pc 0x0000000002d53ab3 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#07 pc 0x0000000002cd25b1 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#08 pc 0x0000000002cd6a6b /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#09 pc 0x0000000002cd6707 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#10 pc 0x0000000002cd65a1 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#11 pc 0x0000000002cd6517 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#12 pc 0x0000000002cefec7 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#13 pc 0x0000000002182c1d /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#14 pc 0x00000000022080b1 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#15 pc 0x0000000001870109 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#16 pc 0x000000000223cebb /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#17 pc 0x00000000021d1f03 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#18 pc 0x00000000021d1da1 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#19 pc 0x00000000021d1c8b /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#20 pc 0x000000000218ff8d /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#21 pc 0x00000000021eeb59 /data/app/com.google.android.trichromelibrary_524912630-SrS90JObl_3fO4boVsOGnA==/base.apk!libmonochrome.so
#22 pc 0x00000000000a6077 /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20)
#23 pc 0x0000000000060131 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)
3:
backtrace:
#00 pc 0x0000000002662a4c /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#01 pc 0x0000000000da5e3d /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#02 pc 0x00000000031ef611 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#03 pc 0x0000000002d8ec75 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#04 pc 0x0000000002e1b28b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#05 pc 0x0000000002e1b1d5 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#06 pc 0x0000000002e1b1a5 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#07 pc 0x0000000002e1b155 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#08 pc 0x0000000002cf06df /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#09 pc 0x0000000002e1b11f /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#10 pc 0x0000000001d66d4b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#11 pc 0x0000000000dad0ff /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#12 pc 0x0000000000dad1dd /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#13 pc 0x0000000001d66d4b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#14 pc 0x0000000000dad43b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#15 pc 0x0000000000dad89b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#16 pc 0x0000000000da5151 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#17 pc 0x0000000000da433b /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#18 pc 0x0000000000da9f07 /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#19 pc 0x0000000000d9f25f /data/app/~~hWszRrrJN--LzAoxUzM-9w==/com.google.android.trichromelibrary_524912630-IFxwMuDrQjBaSN4fr6W6Ww==/base.apk!libmonochrome.so
#20 pc 0x00000000000024cd /system/lib/libwebviewchromium_plat_support.so (android::(anonymous namespace)::draw_gl(int, void*, android::uirenderer::DrawGlInfo const&)+236)
#21 pc 0x0000000000165745 /system/lib/libhwui.so (android::uirenderer::WebViewFunctor::drawGl(android::uirenderer::DrawGlInfo const&)+36)
#22 pc 0x00000000001462b3 /system/lib/libhwui.so (android::uirenderer::skiapipeline::GLFunctorDrawable::onDraw(SkCanvas*)+1938)
#23 pc 0x00000000001c105d /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+52)
#24 pc 0x00000000003fa181 /system/lib/libhwui.so (SkGpuDevice::drawDrawable(SkDrawable*, SkMatrix const*, SkCanvas*)+208)
#25 pc 0x00000000001168f9 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1004)
#26 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#27 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#28 pc 0x000000000011692d /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1056)
#29 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#30 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#31 pc 0x0000000000116915 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1032)
#32 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#33 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#34 pc 0x000000000011692d /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1056)
#35 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#36 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#37 pc 0x0000000000116915 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1032)
#38 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#39 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#40 pc 0x000000000011692d /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1056)
#41 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#42 pc 0x000000000012d1c9 /system/lib/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+52)
#43 pc 0x0000000000116915 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1032)
#44 pc 0x0000000000117191 /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+204)
#45 pc 0x000000000014b891 /system/lib/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderFrameImpl(SkRect const&, std::__1::vector<android::sp<android::uirenderer::RenderNode>, std::__1::allocator<android::sp<android::uirenderer::RenderNode> > > const&, bool, android::uirenderer::Rect const&, SkCanvas*, SkMatrix const&)+556)
#46 pc 0x000000000014b54f /system/lib/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderFrame(android::uirenderer::LayerUpdateQueue const&, SkRect const&, std::__1::vector<android::sp<android::uirenderer::RenderNode>, std::__1::allocator<android::sp<android::uirenderer::RenderNode> > > const&, bool, android::uirenderer::Rect const&, sk_sp<SkSurface>, SkMatrix const&)+94)
#47 pc 0x0000000000149241 /system/lib/libhwui.so (android::uirenderer::skiapipeline::SkiaOpenGLPipeline::draw(android::uirenderer::renderthread::Frame const&, SkRect const&, SkRect const&, android::uirenderer::LightGeometry const&, android::uirenderer::LayerUpdateQueue*, android::uirenderer::Rect const&, bool, android::uirenderer::LightInfo const&, std::__1::vector<android::sp<android::uirenderer::RenderNode>, std::__1::allocator<android::sp<android::uirenderer::RenderNode> > > const&, android::uirenderer::FrameInfoVisualizer*)+272)
#48 pc 0x000000000014ff4b /system/lib/libhwui.so (android::uirenderer::renderthread::CanvasContext::draw()+906)
#49 pc 0x0000000000151927 /system/lib/libhwui.so (_ZNSt3__110__function6__funcIZN7android10uirenderer12renderthread13DrawFrameTask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+478)
#50 pc 0x0000000000144163 /system/lib/libhwui.so (android::uirenderer::WorkQueue::process()+158)
#51 pc 0x000000000015bc33 /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+58)
#52 pc 0x000000000000ed43 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+170)
#53 pc 0x000000000000e881 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+264)
#54 pc 0x00000000000aadbb /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
#55 pc 0x0000000000063bcd /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)
Well, it's really peculiar, but we were fiddling with settings, and disabling "Optimized Frame Pacing" seems to have helped:
Actually, we stumbled upon this, because swappy::ChoreographerFilter::threadMain(bool, int)
was present in some reports but not in the thread that crashed.