Search code examples
androidunity-game-enginewebviewuniwebview

Unity, Android: a lot of crashes in an app with WebView


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!

enter image description here

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)

Solution

  • Well, it's really peculiar, but we were fiddling with settings, and disabling "Optimized Frame Pacing" seems to have helped:

    enter image description here

    Actually, we stumbled upon this, because swappy::ChoreographerFilter::threadMain(bool, int) was present in some reports but not in the thread that crashed.

    enter image description here