Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rendering multiple Webviews with injected JS causes a crash on Android #623

Closed
emeraldsanto opened this issue Jun 5, 2019 · 3 comments
Closed

Comments

@emeraldsanto
Copy link

emeraldsanto commented Jun 5, 2019

Bug description:
My app loads data from an API that is shared with the web version of our app which is why I am using webviews to directly render the HTML contents. Each paragraph of an article has its own webview as I need to render ad banners between them. Sometimes the webviews will load correctly and the app will only crash once I try to go back to the previous screen (using React Navigation) and at other times it will crash before even showing the webviews on screen.

To Reproduce:
Load enough embedded tweets with the Twitter JS script inside webviews. I will try to post a Snack later.

Expected behavior:
Page loads correctly at all times, without crashing.

Screenshots/Videos:
Stacktrace from Android Studio:

Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1c in tid 13662 (RenderThread), pid 13634 (com.example)
Build fingerprint: 'google/sdk_gphone_x86/generic_x86:9/PSR1.180720.093/5456446:userdebug/dev-keys'
Revision: '0'
ABI: 'x86'
pid: 13634, tid: 13662, name: RenderThread  >>> com.example <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1c
Cause: null pointer dereference
    eax e7a959c0  ebx f0a794a0  ecx f0a6994c  edx 00000002
    edi efcbbd9c  esi 00000000
    ebp d314a7e8  esp d314a7d0  eip f07edeea
backtrace:
    #00 pc 0060ceea  /system/lib/libhwui.so (SkSurface::getCanvas()+26)
    #01 pc 0009b53d  /system/lib/libhwui.so (android::uirenderer::skiapipeline::GLFunctorDrawable::onDraw(SkCanvas*)+3357)
    #02 pc 005200f7  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+279)
    #03 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #04 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #05 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #06 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #07 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #08 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #09 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #10 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #11 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #12 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #13 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #14 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #15 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #16 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #17 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #18 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #19 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #20 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #21 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #22 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #23 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #24 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #25 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #26 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #27 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #28 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #29 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #30 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #31 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #32 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #33 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #34 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #35 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #36 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #37 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #38 pc 0052006d  /system/lib/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+141)
    #39 pc 0051c9a6  /system/lib/libhwui.so (SkCanvas::onDrawDrawable(SkDrawable*, SkMatrix const*)+38)
    #40 pc 00178318  /system/lib/libhwui.so (SkCanvas::drawDrawable(SkDrawable*, SkMatrix const*)+344)
    #41 pc 005208f5  /system/lib/libhwui.so (SkLiteDL::draw(SkCanvas*) const+229)
    #42 pc 004fe090  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+352)
    #43 pc 004fe51f  /system/lib/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*)+287)
    #44 pc 000a655e  /system/lib/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderLayersImpl(android::uirenderer::LayerUpdateQueue const&, bool, bool)+862)
    #45 pc 00546e44  /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, bool, android::uirenderer::Rect const&, sk_sp<SkSurface>)+84)
    #46 pc 00545e39  /system/lib/libhwui.so (android::uirenderer::skiapipeline::SkiaOpenGLPipeline::draw(android::uirenderer::renderthread::Frame const&, SkRect const&, SkRect const&, android::uirenderer::FrameBuilder::LightGeometry const&, android::uirenderer::LayerUpdateQueue*, android::uirenderer::Rect const&, bool, bool, android::uirenderer::BakedOpRenderer::LightInfo const&, std::__1::vector<android::sp<android::uirenderer::RenderNode>, std::__1::allocator<android::sp<android::uirenderer::RenderNode>>
    #47 pc 000b2e76  /system/lib/libhwui.so (android::uirenderer::renderthread::CanvasContext::draw()+262)
    #48 pc 0054bd02  /system/lib/libhwui.so (_ZNSt3__110__function6__funcIZN7android10uirenderer12renderthread13DrawFrameTask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+898)
    #49 pc 004fd4c2  /system/lib/libhwui.so (android::uirenderer::WorkQueue::process()+242)
    #50 pc 000c454a  /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+314)
    #51 pc 0000e616  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+326)
    #52 pc 0000df76  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
    #53 pc 0008f065  /system/lib/libc.so (__pthread_start(void*)+53)

Environment:

  • OS: MacOS
  • OS version: Mojave
  • react-native version: ^0.59.8
  • react-native-webview version: ^5.11.0
@paranoiagu
Copy link

i have the same problem.

@emeraldsanto
Copy link
Author

After a little more digging, I have found a solution (or at least a workaround ?). Turns out there is this hardwareAccelerationDisabledAndroid prop which is a boolean. I tried setting it to true and it seems to have fixed the problem for now!

<Webview
    hardwareAccelerationDisabledAndroid={true}
    ... />

@Embraser01
Copy link

Related to #575

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants