Skip to content

Instantly share code, notes, and snippets.

@hbb20
Created November 28, 2023 22:39
Show Gist options
  • Save hbb20/0ffa975df9e36117e4560b5e0de5fe7b to your computer and use it in GitHub Desktop.
Save hbb20/0ffa975df9e36117e4560b5e0de5fe7b to your computer and use it in GitHub Desktop.
measureLazyList stack trace
Fatal Exception: java.lang.IllegalArgumentException
Failed requirement.
androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-CD5nmq0 (LazyListMeasure.kt:63)
androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw (LazyList.kt:306)
androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke (LazyList.kt:184)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw (LazyLayout.kt:87)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke (LazyLayout.kt:80)
androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:866)
androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:126)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2.invoke-3p2s80s (AndroidOverscroll.kt:578)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2.invoke (AndroidOverscroll.kt:577)
androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s (LayoutModifier.kt:291)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1.invoke-3p2s80s (AndroidOverscroll.kt:562)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1.invoke (AndroidOverscroll.kt:561)
androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s (LayoutModifier.kt:291)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s (GraphicsLayerModifier.kt:646)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1499)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1495)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2299)
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:467)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:230)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:1495)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:35)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:560)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0 (LayoutNodeLayoutDelegate.kt:539)
androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1.measure-3p2s80s (Box.kt:114)
androidx.compose.foundation.layout.BoxWithConstraintsKt$BoxWithConstraints$1$1.invoke-0kLqBqw (BoxWithConstraints.kt:70)
androidx.compose.foundation.layout.BoxWithConstraintsKt$BoxWithConstraints$1$1.invoke (BoxWithConstraints.kt:67)
androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:866)
androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:126)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1499)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1495)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2299)
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:467)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:230)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:1495)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:35)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:560)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0 (LayoutNodeLayoutDelegate.kt:539)
androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw (LazyLayoutMeasureScope.kt:123)
androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure (LazyListMeasuredItemProvider.kt:48)
androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-CD5nmq0 (LazyListMeasure.kt:159)
androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw (LazyList.kt:306)
androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke (LazyList.kt:184)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw (LazyLayout.kt:87)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke (LazyLayout.kt:80)
androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:866)
androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:126)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2.invoke-3p2s80s (AndroidOverscroll.kt:578)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2.invoke (AndroidOverscroll.kt:577)
androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s (LayoutModifier.kt:291)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1.invoke-3p2s80s (AndroidOverscroll.kt:562)
androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1.invoke (AndroidOverscroll.kt:561)
androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s (LayoutModifier.kt:291)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s (GraphicsLayerModifier.kt:646)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:116)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1499)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke (LayoutNodeLayoutDelegate.kt:1495)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2299)
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:467)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:230)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:1495)
androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.java:35)
androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:560)
androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release (LayoutNode.kt:1140)
androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA (MeasureAndLayoutDelegate.kt:321)
androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw (MeasureAndLayoutDelegate.kt:389)
androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw (AndroidComposeView.android.kt:890)
androidx.compose.ui.node.LayoutNode.forceRemeasure (LayoutNode.kt:1214)
androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release (LazyListState.java:301)
androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke (LazyListState.kt:162)
androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke (LazyListState.kt:162)
androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy (ScrollableState.kt:166)
androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke-MK-Hz9U (Scrollable.kt:425)
androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke (Scrollable.kt:417)
androidx.compose.foundation.AndroidEdgeEffectOverscrollEffect.applyToScroll-Rhakbz0 (AndroidOverscroll.kt:180)
androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-3eAAhYA (Scrollable.kt:438)
androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke-MK-Hz9U (Scrollable.kt:490)
androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke (Scrollable.kt:489)
androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$scope$1.scrollBy (Scrollable.kt:494)
androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke (Scrollable.kt:605)
androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke (Scrollable.kt:603)
androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame (SuspendAnimation.kt:361)
androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale (SuspendAnimation.kt:339)
androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale (SuspendAnimation.kt:1)
androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke (SuspendAnimation.kt:279)
androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke (SuspendAnimation.kt:278)
androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke (SuspendAnimation.kt:304)
androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke (SuspendAnimation.kt:303)
androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume (BroadcastFrameClock.java:42)
androidx.compose.runtime.BroadcastFrameClock.sendFrame (BroadcastFrameClock.kt:71)
androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:544)
androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:537)
androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.android.kt:41)
androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch (AndroidUiDispatcher.java:109)
androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch (AndroidUiDispatcher.java:41)
androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.android.kt:69)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:1106)
android.view.Choreographer.doCallbacks (Choreographer.java:866)
android.view.Choreographer.doFrame (Choreographer.java:792)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1092)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loopOnce (Looper.java:226)
android.os.Looper.loop (Looper.java:313)
android.app.ActivityThread.main (ActivityThread.java:8663)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:567)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)
@hbb20
Copy link
Author

hbb20 commented Jan 10, 2024 via email

@IrinaMank
Copy link

Yes, I have additional log info in my crashlytics so I know what screen is crushed (I use crashlytics.log() method to log which screen my user currently sees). For now I have suggestion that this crush is caused by Pull-to-Refresh view (I use SwipeRefresh from Accomponist), so I decided to switch to compose's PullRefreshIndicator and see if it helps. Maybe it will help you too

Also I see from google's source code that they've added additional info to this error, maybe you can update compose-foundation lib to most recent beta version and see if it gives you more context

@hbb20
Copy link
Author

hbb20 commented Jan 11, 2024

I already use PullRefreshIndicator from Compose for the versions that have reported crashes.

Regarding recent beta version of foundation, what gives you hope?

@hbb20
Copy link
Author

hbb20 commented Mar 30, 2024

Now I am seeing "invalid afterContentPadding" crashes. What's your situation?

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