Skip to content

App crashes on Android (release variant) with Canvas: trying to draw too large in logcat #23479

@EgidioCaprino

Description

@EgidioCaprino

🐛 Bug Report

App crashes, with no error, in release variant on Android. The logcat shows this error:

02-15 15:47:13.074 12078 12078 E AndroidRuntime: java.lang.RuntimeException: Canvas: trying to draw too large(146506816bytes) bitmap.
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:98)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.RoundedDrawable.draw(RoundedDrawable.java:376)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.RoundedBitmapDrawable.draw(RoundedBitmapDrawable.java:46)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.ForwardingDrawable.draw(ForwardingDrawable.java:145)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.ScaleTypeDrawable.draw(ScaleTypeDrawable.java:123)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.FadeDrawable.drawDrawableWithAlpha(FadeDrawable.java:302)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.FadeDrawable.draw(FadeDrawable.java:289)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.drawable.ForwardingDrawable.draw(ForwardingDrawable.java:145)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.drawee.generic.RootDrawable.draw(RootDrawable.java:81)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.widget.ImageView.onDraw(ImageView.java:1342)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20207)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19073)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19073)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.widget.ScrollView.draw(ScrollView.java:1739)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.scroll.ReactScrollView.draw(ReactScrollView.java:402)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19073)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.widget.ScrollView.draw(ScrollView.java:1739)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.scroll.ReactScrollView.draw(ReactScrollView.java:402)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:672)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19073)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:19935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.draw(View.java:20210)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.widget.ScrollView.draw(ScrollView.java:1739)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.facebook.react.views.scroll.ReactScrollView.draw(ReactScrollView.java:402)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19082)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4317)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4290)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:19042)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:801)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:3311)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3115)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2484)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:761)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:696)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:873)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:193)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6718)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
02-15 15:47:13.074 12078 12078 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

To Reproduce

I have no idea where the error lies exactly. It is probably related to the rendering of an Image component.

Expected Behavior

The app should not crash 🙂

Code Example

I cannot be sure because the error produced no stack trace for the JS part of the application, but I suppose the poblem might be start from this rendering:

<ListItem {...props} avatar style={itemStyle}>
  <Left>
    {otherUsers.length === 1
      ? <ContactThumbnail contact={otherUsers[0]} />
      : (
        <Thumbnail
          source={avatarPlaceholder}
          style={{
            width: dimensions.avatar.contactThumbnail.display,
            height: dimensions.avatar.contactThumbnail.display,
          }}
        />
      )
    }
    {count
      ? (
        <Badge info style={styles.badge}>
          <Text style={styles.text}>{count}</Text>
        </Badge>
      )
      : null
    }
    {conversation.selected
      ? (
        <Badge success style={styles.selectedBadge}>
          <Text style={styles.tick}></Text>
        </Badge>
      )
      : null
    }
  </Left>
  <Body>
    <Text>
      {title}
    </Text>
    {lastMessage
      ? <LastMessagePreview {...lastMessage} />
      : <Text>{' '}</Text>
    }
  </Body>
  <Right>
    {lastMessage
      ? <DateFormat date={lastMessage.createdDate} />
      : <DateFormat date={conversation.createdDate} />
    }
  </Right>
</ListItem>

Environment

  React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
      Memory: 34.70 MB / 16.00 GB
      Shell: 5.3 - /bin/zsh
    Binaries:
      Node: 11.9.0 - /usr/local/bin/node
      npm: 6.7.0 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 23, 27, 28
        Build Tools: 27.0.3, 28.0.0, 28.0.3
        System Images: android-28 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.1 AI-173.4907809
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      react: ^16.7.0 => 16.7.0
      react-native: ^0.58.3 => 0.58.3
    npmGlobalPackages:
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions