Skip to content

IllegalArgumentException: width and height must be > 0 #2620

@allenchen1154

Description

@allenchen1154

Link to fork with a repro in the issue-repro module
https://github.com/airbnb/lottie-android/compare/master...allenchen1154:lottie-android:allen--bitmap-crash-repro?expand=1

Describe the bug
Crash with stacktrace:

java.lang.IllegalArgumentException: width and height must be > 0
        at android.graphics.Bitmap.createBitmap(Bitmap.java:1113)
        at android.graphics.Bitmap.createBitmap(Bitmap.java:1080)
        at android.graphics.Bitmap.createBitmap(Bitmap.java:1030)
        at android.graphics.Bitmap.createBitmap(Bitmap.java:991)
        at com.airbnb.lottie.utils.OffscreenLayer.allocateBitmap(OffscreenLayer:189)
        at com.airbnb.lottie.utils.OffscreenLayer.allocateBitmap(OffscreenLayer:189)
        at com.airbnb.lottie.utils.OffscreenLayer.start(OffscreenLayer:274)
        at com.airbnb.lottie.model.layer.CompositionLayer.drawLayer(CompositionLayer:154)
        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer:270)
        at com.airbnb.lottie.model.layer.CompositionLayer.drawLayer(CompositionLayer:161)
        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer:270)
        at com.airbnb.lottie.LottieDrawable.draw(LottieDrawable:826)
        at com.airbnb.lottie.LottieDrawable.draw(LottieDrawable:804)
        at com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2.invoke(LottieAnimationKt:145)
        at com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2.invoke(LottieAnimationKt:107)
        at androidx.compose.ui.draw.DrawBackgroundModifier.draw(DrawBackgroundModifier:127)
        at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-eZhPAX0$ui_release(LayoutNodeDrawScope:110)
        at androidx.compose.ui.node.LayoutNodeDrawScope.draw-eZhPAX0$ui_release(LayoutNodeDrawScope:89)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:450)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode:1000)
        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator:196)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode:1000)
        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator:196)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator:280)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator:439)
        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode:1000)
        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator:196)
        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator:447)
        at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator:58)
        at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator:469)
        at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator:468)
        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot:2441)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver:502)
        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver:258)
        at t2.SnapshotStateObserver.observeReads(SnapshotStateObserver:118)
        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver:133)
        at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator:468)
        at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator:466)
        at b2.SelectionRegistrarImpl$sort$1.invoke(SelectionRegistrarImpl:272)
        at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer:291)
        at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer:289)
        at androidx.compose.ui.graphics.layer.GraphicsLayerV29.record(GraphicsLayerV29:245)
        at androidx.compose.ui.graphics.layer.GraphicsLayer.recordInternal(GraphicsLayer:430)
        at androidx.compose.ui.graphics.layer.GraphicsLayer.record-mL-hObY(GraphicsLayer:423)
        at androidx.compose.ui.platform.GraphicsLayerOwnerLayer.updateDisplayList(GraphicsLayerOwnerLayer:284)
        at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView:1573)
        at android.view.View.draw(View.java:21567)
        at android.view.View.updateDisplayListIfDirty(View.java:20433)
        at android.view.View.draw(View.java:21293)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4417)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4177)
        at android.view.View.updateDisplayListIfDirty(View.java:20424)
        at android.view.View.draw(View.java:21293)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4417)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4177)
        at android.view.View.updateDisplayListIfDirty(View.java:20424)
        at android.view.View.draw(View.java:21293)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4417)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4177)
        at android.view.View.updateDisplayListIfDirty(View.java:20424)
        at android.view.View.draw(View.java:21293)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4417)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4177)
        at android.view.View.draw(View.java:21567)
        at com.android.internal.policy.DecorView.draw(DecorView.java:844)
        at android.view.View.updateDisplayListIfDirty(View.java:20433)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3732)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3527)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2864)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1817)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7779)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1031)
        at android.view.Choreographer.doCallbacks(Choreographer.java:854)
        at android.view.Choreographer.doFrame(Choreographer.java:789)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
        at android.os.Handler.handleCallback(Handler.java:914)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:227)
        at android.app.ActivityThread.main(ActivityThread.java:7582)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953)

Steps To Reproduce
Unable to reproduce the crash at the moment.

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