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

safeMode is not catching RecordingCanvas.throwIfCannotDraw #2500

Open
jasco opened this issue May 7, 2024 · 0 comments
Open

safeMode is not catching RecordingCanvas.throwIfCannotDraw #2500

jasco opened this issue May 7, 2024 · 0 comments

Comments

@jasco
Copy link

jasco commented May 7, 2024

In a Jetpack Compose application using LottieAnimation(..., safeMode = true) using lottie-android 6.4.0, I am still seeing reports of a crash with the following stacktrace. I previously inquired about this in #2478 and it was hoped that safeMode would prevent.

Crash: Canvas: trying to draw too large(141030768bytes) bitmap.

android.graphics.RecordingCanvas
RecordingCanvas.java line 280 in android.graphics.RecordingCanvas.throwIfCannotDraw()
android.graphics.BaseRecordingCanvas
BaseRecordingCanvas.java line 88 in android.graphics.BaseRecordingCanvas.drawBitmap()
com.airbnb.lottie.model.layer.ImageLayer
ImageLayer.java in com.airbnb.lottie.model.layer.ImageLayer.h()
com.airbnb.lottie.model.layer.BaseLayer
BaseLayer.java in com.airbnb.lottie.model.layer.BaseLayer.e()
com.airbnb.lottie.model.layer.CompositionLayer
CompositionLayer.java in com.airbnb.lottie.model.layer.CompositionLayer.h()
com.airbnb.lottie.model.layer.BaseLayer
BaseLayer.java in com.airbnb.lottie.model.layer.BaseLayer.e()
com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2
LottieAnimationKt.java in com.airbnb.lottie.compose.LottieAnimationKt$LottieAnimation$2.invoke()
androidx.compose.ui.draw.DrawBackgroundModifier
DrawBackgroundModifier.java in androidx.compose.ui.draw.DrawBackgroundModifier.h()
androidx.compose.ui.node.LayoutNodeDrawScope
LayoutNodeDrawScope.java in androidx.compose.ui.node.LayoutNodeDrawScope.b()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutModifierNodeCoordinator
LayoutModifierNodeCoordinator.java in androidx.compose.ui.node.LayoutModifierNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutModifierNodeCoordinator
LayoutModifierNodeCoordinator.java in androidx.compose.ui.node.LayoutModifierNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke()
com.google.android.material.shape.EdgeTreatment
EdgeTreatment.java in com.google.android.material.shape.EdgeTreatment.l()
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap
SnapshotStateObserver.java in androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.a()
androidx.compose.runtime.snapshots.SnapshotStateObserver
SnapshotStateObserver.java in androidx.compose.runtime.snapshots.SnapshotStateObserver.c()
androidx.compose.ui.node.OwnerSnapshotObserver
OwnerSnapshotObserver.java in androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator._fsMaybeObserveReads()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1
NodeCoordinator.java line 382 in androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1
NodeCoordinator.java line 380 in androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke()
androidx.compose.ui.platform.RenderNodeApi29
RenderNodeApi29.java in androidx.compose.ui.platform.RenderNodeApi29.G()
androidx.compose.ui.platform.RenderNodeLayer
RenderNodeLayer.java in androidx.compose.ui.platform.RenderNodeLayer.k()
androidx.compose.ui.platform.RenderNodeLayer
RenderNodeLayer.java in androidx.compose.ui.platform.RenderNodeLayer.__fs_original_drawLayer()
androidx.compose.ui.platform.RenderNodeLayer
RenderNodeLayer.java in androidx.compose.ui.platform.RenderNodeLayer.drawLayer()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutModifierNodeCoordinator
LayoutModifierNodeCoordinator.java in androidx.compose.ui.node.LayoutModifierNodeCoordinator.a1()
androidx.compose.ui.node.LayoutNodeDrawScope
LayoutNodeDrawScope.java in androidx.compose.ui.node.LayoutNodeDrawScope.a()
androidx.compose.foundation.NoIndication$NoIndicationInstance
NoIndication.java in androidx.compose.foundation.NoIndication$NoIndicationInstance.d()
androidx.compose.foundation.IndicationModifier
IndicationModifier.java in androidx.compose.foundation.IndicationModifier.h()
androidx.compose.ui.node.BackwardsCompatNode
BackwardsCompatNode.java in androidx.compose.ui.node.BackwardsCompatNode.h()
androidx.compose.ui.node.LayoutNodeDrawScope
LayoutNodeDrawScope.java in androidx.compose.ui.node.LayoutNodeDrawScope.b()
androidx.compose.ui.node.LayoutNodeDrawScope
LayoutNodeDrawScope.java in androidx.compose.ui.node.LayoutNodeDrawScope.a()
androidx.compose.foundation.BackgroundNode
BackgroundNode.java in androidx.compose.foundation.BackgroundNode.h()
androidx.compose.ui.node.LayoutNodeDrawScope
LayoutNodeDrawScope.java in androidx.compose.ui.node.LayoutNodeDrawScope.b()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutModifierNodeCoordinator
LayoutModifierNodeCoordinator.java in androidx.compose.ui.node.LayoutModifierNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.__fs_original_draw$ui_release()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.draw$ui_release()
androidx.compose.ui.node.InnerNodeCoordinator
InnerNodeCoordinator.java in androidx.compose.ui.node.InnerNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.__fs_original_draw$ui_release()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.draw$ui_release()
androidx.compose.ui.node.InnerNodeCoordinator
InnerNodeCoordinator.java in androidx.compose.ui.node.InnerNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutModifierNodeCoordinator
LayoutModifierNodeCoordinator.java in androidx.compose.ui.node.LayoutModifierNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.J0()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.__fs_original_draw$ui_release()
androidx.compose.ui.node.LayoutNode
LayoutNode.java in androidx.compose.ui.node.LayoutNode.draw$ui_release()
androidx.compose.ui.node.InnerNodeCoordinator
InnerNodeCoordinator.java in androidx.compose.ui.node.InnerNodeCoordinator.a1()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator.L0()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke()
com.google.android.material.shape.EdgeTreatment
EdgeTreatment.java in com.google.android.material.shape.EdgeTreatment.l()
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap
SnapshotStateObserver.java in androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.a()
androidx.compose.runtime.snapshots.SnapshotStateObserver
SnapshotStateObserver.java in androidx.compose.runtime.snapshots.SnapshotStateObserver.c()
androidx.compose.ui.node.OwnerSnapshotObserver
OwnerSnapshotObserver.java in androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release()
androidx.compose.ui.node.NodeCoordinator
NodeCoordinator.java in androidx.compose.ui.node.NodeCoordinator._fsMaybeObserveReads()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1
NodeCoordinator.java line 382 in androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke()
androidx.compose.ui.node.NodeCoordinator$drawBlock$1
NodeCoordinator.java line 380 in androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke()
androidx.compose.ui.platform.RenderNodeApi29
RenderNodeApi29.java in androidx.compose.ui.platform.RenderNodeApi29.G()
androidx.compose.ui.platform.RenderNodeLayer
RenderNodeLayer.java in androidx.compose.ui.platform.RenderNodeLayer.k()
androidx.compose.ui.platform.AndroidComposeView
AndroidComposeView.java in androidx.compose.ui.platform.AndroidComposeView.dispatchDraw()
android.view.View
View.java line 22358 in android.view.View.draw()
android.view.View
View.java line 21231 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ViewGroup
ViewGroup.java line 4500 in android.view.ViewGroup.recreateChildDisplayList()
android.view.ViewGroup
ViewGroup.java line 4473 in android.view.ViewGroup.dispatchGetDisplayList()
android.view.View
View.java line 21191 in android.view.View.updateDisplayListIfDirty()
android.view.ThreadedRenderer
ThreadedRenderer.java line 559 in android.view.ThreadedRenderer.updateViewTreeDisplayList()
android.view.ThreadedRenderer
ThreadedRenderer.java line 565 in android.view.ThreadedRenderer.updateRootDisplayList()
android.view.ThreadedRenderer
ThreadedRenderer.java line 642 in android.view.ThreadedRenderer.draw()
android.view.ViewRootImpl
ViewRootImpl.java line 4108 in android.view.ViewRootImpl.draw()
android.view.ViewRootImpl
ViewRootImpl.java line 3835 in android.view.ViewRootImpl.performDraw()
android.view.ViewRootImpl
ViewRootImpl.java line 3106 in android.view.ViewRootImpl.performTraversals()
android.view.ViewRootImpl
ViewRootImpl.java line 1950 in android.view.ViewRootImpl.doTraversal()
android.view.ViewRootImpl$TraversalRunnable
ViewRootImpl.java line 8186 in android.view.ViewRootImpl$TraversalRunnable.run()
android.view.Choreographer$CallbackRecord
Choreographer.java line 1056 in android.view.Choreographer$CallbackRecord.run()
android.view.Choreographer
Choreographer.java line 878 in android.view.Choreographer.doCallbacks()
android.view.Choreographer
Choreographer.java line 811 in android.view.Choreographer.doFrame()
android.view.Choreographer$FrameDisplayEventReceiver
Choreographer.java line 1041 in android.view.Choreographer$FrameDisplayEventReceiver.run()
android.os.Handler
Handler.java line 938 in android.os.Handler.handleCallback()
android.os.Handler
Handler.java line 99 in android.os.Handler.dispatchMessage()
android.os.Looper
Looper.java line 223 in android.os.Looper.loop()
android.app.ActivityThread
ActivityThread.java line 7703 in android.app.ActivityThread.main()
java.lang.reflect.Method
Method.java in java.lang.reflect.Method.invoke()
com.android.internal.os.RuntimeInit$MethodAndArgsCaller
RuntimeInit.java line 592 in com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run()
com.android.internal.os.ZygoteInit
ZygoteInit.java line 952 in com.android.internal.os.ZygoteInit.main()
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

1 participant