Status Update
Comments
an...@google.com <an...@google.com>
to...@gmail.com <to...@gmail.com> #2
Can you try with the latest snapshot? Not reproducible for me on androidx-main.
to...@gmail.com <to...@gmail.com> #3
Ok, after trying a couple more versions, realized this is a duplicate of
From the release notes:
AndroidView's update callback's first invocation will now be defered until the view is attached, instead of running when the composition that introduces the AndroidView is applied. This fixes a bug where the update callback wouldn't be invalidated if a state it read was changed immediately by an effect. (Ie9438,
) b/291094055
Sorry for the confusion!
to...@gmail.com <to...@gmail.com> #4
Just got some similar crash from some of my code this time. (No repro very rare on Crashlytics). Source attached.
Since it's under my control I can try catch and push any state or data needed to analyse this if you tell me what you may need.
Fatal Exception: java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1458)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno(LayoutNodeLayoutDelegate.kt:735)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:719)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.place(Placeable.kt:425)
at androidx.compose.ui.layout.Placeable$PlacementScope.place$default(Placeable.kt:217)
at app.symfonik.core.ui.common.text.MarqueeTextKt$MarqueeText$4$1$4.invoke(MarqueeText.kt:167)
at app.symfonik.core.ui.common.text.MarqueeTextKt$MarqueeText$4$1$4.invoke(MarqueeText.kt:163)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope$layout$1.placeChildren(SubcomposeLayout.kt:890)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure-3p2s80s$$inlined$createMeasureResult$1.placeChildren(SubcomposeLayout.kt:982)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:365)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:360)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:494)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:83)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:393)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.onNodePlaced$ui_release(LayoutNodeLayoutDelegate.kt:551)
at androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno(InnerNodeCoordinator.kt:160)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:451)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:298)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:648)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:647)
at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:104)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:428)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:489)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:483)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:494)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:98)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno(LayoutNodeLayoutDelegate.kt:745)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:719)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.place(Placeable.kt:425)
at androidx.compose.ui.layout.Placeable$PlacementScope.place$default(Placeable.kt:217)
at androidx.compose.foundation.layout.RowColumnMeasurementHelper.placeHelper(RowColumnMeasurementHelper.kt:323)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1.invoke(RowColumnImpl.kt:85)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1$measure$1.invoke(RowColumnImpl.kt:84)
at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:104)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:365)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:360)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:494)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:83)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:393)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.onNodePlaced$ui_release(LayoutNodeLayoutDelegate.kt:551)
at androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno(InnerNodeCoordinator.kt:160)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:417)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:203)
at androidx.compose.foundation.layout.PaddingNode$measure$1.invoke(Padding.kt:403)
at androidx.compose.foundation.layout.PaddingNode$measure$1.invoke(Padding.kt:401)
at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:104)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:428)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:489)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:483)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:494)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:98)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno(LayoutNodeLayoutDelegate.kt:745)
at androidx.compose.ui.node.LayoutNode.getMeasuredByParentInLookahead$ui_release(LayoutNode.kt:764)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.replace(LayoutNodeLayoutDelegate.kt:764) at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:914)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:497)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded$default(MeasureAndLayoutDelegate.kt:463)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:354)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:973)
at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:230)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.semanticsChangeChecker$lambda$46(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2186)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
ca...@gmail.com <ca...@gmail.com> #5
We're experiencing crashes with almost the exact stack trace. Would like to know if there's anything fix planned, or any temporary workaround recommended.
ti...@google.com <ti...@google.com> #6
This should be fixed with aosp/3277592. It will be included in the next alpha release.
Description
Jetpack Compose version: 1.6.0-alpha05
Jetpack Compose component used: Compose UI
Android Studio Build: Giraffe Patch 2
Kotlin version: 1.9.10
Stack trace (if applicable):
Exception: java.lang.IllegalStateException LayoutNode should be attached to an owner androidx.compose.ui.node.LayoutNodeKt.requireOwner (LayoutNode.kt:1458) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno (LayoutNodeLayoutDelegate.kt:697) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno (LayoutNodeLayoutDelegate.kt:681) androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno (Placeable.kt:34) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM (Placeable.kt:489) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM$default (Placeable.kt:320) androidx.compose.foundation.lazy.LazyListMeasuredItem.place (LazyListMeasuredItem.kt:182) androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$8.invoke (LazyListMeasure.kt:352) androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$8.invoke (LazyListMeasure.kt:349) androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren (MeasureScope.kt:70) androidx.compose.foundation.lazy.LazyListMeasureResult.placeChildren (Unknown Source:2) androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure-3p2s80s$$inlined$createMeasureResult$1.placeChildren (SubcomposeLayout.kt:951) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke (LayoutNodeLayoutDelegate.kt:379) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke (LayoutNodeLayoutDelegate.kt:371) androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2303) androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:496) androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:256) androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133) androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release (OwnerSnapshotObserver.kt:83) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren (LayoutNodeLayoutDelegate.kt:371) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.onNodePlaced$ui_release (LayoutNodeLayoutDelegate.kt:515) androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno (InnerNodeCoordinator.kt:160) androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno (Placeable.kt:34) androidx.compose.ui.layout.Placeable$PlacementScope.place (Placeable.kt:460) androidx.compose.ui.layout.Placeable$PlacementScope.place$default (Placeable.kt:218) androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1.invoke (AndroidOverscroll.kt:589) androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1.invoke (AndroidOverscroll.kt:588) androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren (MeasureScope.kt:70) androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno (LayoutModifierNodeCoordinator.kt:172) androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno (Placeable.kt:34) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer (Placeable.kt:486) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default (Placeable.kt:299) androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1.invoke (AndroidOverscroll.kt:577) androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1.invoke (AndroidOverscroll.kt:570) androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren (MeasureScope.kt:70) androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno (LayoutModifierNodeCoordinator.kt:172) androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno (Placeable.kt:34) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer (Placeable.kt:486) androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default (Placeable.kt:299) androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke (GraphicsLayerModifier.kt:648) androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke (GraphicsLayerModifier.kt:647) androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren (MeasureScope.kt:70) androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno (LayoutModifierNodeCoordinator.kt:172) androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno (Placeable.kt:34) androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50 (Placeable.kt:463) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1.invoke (LayoutNodeLayoutDelegate.kt:709) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1.invoke (LayoutNodeLayoutDelegate.kt:704) androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2303) androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:496) androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:256) androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133) androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release (OwnerSnapshotObserver.kt:98) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno (LayoutNodeLayoutDelegate.kt:704) androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.replace (LayoutNodeLayoutDelegate.kt:730) androidx.compose.ui.node.LayoutNode.replace$ui_release (LayoutNode.kt:917) androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded (MeasureAndLayoutDelegate.kt:495) androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded$default (MeasureAndLayoutDelegate.kt:461) androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout (MeasureAndLayoutDelegate.kt:354) androidx.compose.ui.platform.AndroidComposeView.onLayout (AndroidComposeView.android.kt:1056) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) androidx.compose.ui.platform.AbstractComposeView.internalOnLayout$ui_release (ComposeView.android.kt:322) androidx.compose.ui.platform.AbstractComposeView.onLayout (ComposeView.android.kt:313) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.widget.FrameLayout.layoutChildren (FrameLayout.java:332) android.widget.FrameLayout.onLayout (FrameLayout.java:270) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.widget.LinearLayout.setChildFrame (LinearLayout.java:1891) android.widget.LinearLayout.layoutVertical (LinearLayout.java:1729) android.widget.LinearLayout.onLayout (LinearLayout.java:1638) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.widget.FrameLayout.layoutChildren (FrameLayout.java:332) android.widget.FrameLayout.onLayout (FrameLayout.java:270) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.widget.LinearLayout.setChildFrame (LinearLayout.java:1891) android.widget.LinearLayout.layoutVertical (LinearLayout.java:1729) android.widget.LinearLayout.onLayout (LinearLayout.java:1638) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.widget.FrameLayout.layoutChildren (FrameLayout.java:332) android.widget.FrameLayout.onLayout (FrameLayout.java:270) com.android.internal.policy.DecorView.onLayout (DecorView.java:799) android.view.View.layout (View.java:23716) android.view.ViewGroup.layout (ViewGroup.java:6413) android.view.ViewRootImpl.performLayout (ViewRootImpl.java:4097) android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:3438) android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2350) android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:9198) android.view.Choreographer$CallbackRecord.run (Choreographer.java:1231) android.view.Choreographer$CallbackRecord.run (Choreographer.java:1239) android.view.Choreographer.doCallbacks (Choreographer.java:899) android.view.Choreographer.doFrame (Choreographer.java:832) android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1214) android.os.Handler.handleCallback (Handler.java:942) android.os.Handler.dispatchMessage (Handler.java:99) android.os.Looper.loopOnce (Looper.java:201) android.os.Looper.loop (Looper.java:288) android.app.ActivityThread.main (ActivityThread.java:7925) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:942)
After clicking on lazyColumnItem crash occures