Status Update
Comments
va...@gmail.com <va...@gmail.com> #2
Can you try with the latest snapshot? Not reproducible for me on androidx-main.
ry...@google.com <ry...@google.com>
ri...@gmail.com <ri...@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!
Be...@dese.gov.au <Be...@dese.gov.au> #4
ev...@gmail.com <ev...@gmail.com> #5
Device: OnePlus 6T A6010
Android version: 11
Used libraries:
Kotlin version: 1.7.0
kotlinCompilerExtensionVersion: "1.2.0"
implementation("androidx.compose.ui:ui:1.3.0-alpha01")
implementation("androidx.activity:activity-compose:1.5.0")
implementation("androidx.compose.material:material:1.3.0-alpha01")
implementation("androidx.compose.ui:ui-tooling:1.3.0-alpha01")
implementation("com.google.accompanist:accompanist-flowlayout:0.23.1")
(with old versions the bug is also reproducible)
Bug is reproduced with hierarchy like
LazyColumn(..) {
items(itemsModel.items) { item ->
Card(..) {
SwipeToDismiss(..) {
FlowRow {
item.tags.forEach { tag ->
Text(text =
}
}
}
}
}
}
Reproduced only when some elements of `FlowRow` for some items don't fit in one line. Bug happens when items in `itemsModel.items` changed (during search).
Also bug reproducible with Row or Column instead of Card. Without Card/Row/Column bug isn't reproducible.
Stacktrace:
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1701)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterWrapper-f8xVGno(LayoutNodeLayoutDelegate.kt:360)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:346)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203)
at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186)
at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1)
at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:126)
at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:125)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1.placeChildren(SubcomposeLayout.kt:602)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:205)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:77)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:1032)
at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:129)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:367)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:361)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:92)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterWrapper-f8xVGno(LayoutNodeLayoutDelegate.kt:361)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:346)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50$default(Placeable.kt:203)
at androidx.compose.foundation.layout.BoxKt.placeInBox(Box.kt:186)
at androidx.compose.foundation.layout.BoxKt.access$placeInBox(Box.kt:1)
at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:126)
at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1$measure$2.invoke(Box.kt:125)
E/AndroidRuntime: at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:205)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:77)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:1032)
at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:129)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:393)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:266)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:407)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:406)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(ModifiedLayoutNode.kt:203)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:393)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:266)
at androidx.compose.ui.graphics.BlockGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:344)
at androidx.compose.ui.graphics.BlockGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:343)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(ModifiedLayoutNode.kt:203)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:359)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:179)
at androidx.compose.foundation.layout.FillModifier$measure$1.invoke(Size.kt:663)
at androidx.compose.foundation.layout.FillModifier$measure$1.invoke(Size.kt:662)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(ModifiedLayoutNode.kt:203)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(Placeable.kt:396)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:369)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:361)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:92)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterWrapper-f8xVGno(LayoutNodeLayoutDelegate.kt:361)
E/AndroidRuntime: at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:346)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(Placeable.kt:396)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM$default(Placeable.kt:286)
at androidx.compose.foundation.lazy.LazyListPositionedItem.place(LazyMeasuredItem.kt:180)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke(LazyListMeasure.kt:303)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke(LazyListMeasure.kt:300)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.foundation.lazy.LazyListMeasureResult.placeChildren(Unknown Source:2)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1.placeChildren(SubcomposeLayout.kt:602)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:205)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:77)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:197)
at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release(LayoutNode.kt:1032)
at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(InnerPlaceable.kt:129)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:393)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:266)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:407)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:406)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(ModifiedLayoutNode.kt:203)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:359)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:179)
at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(Padding.kt:370)
at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(Padding.kt:368)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(ModifiedLayoutNode.kt:203)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:370)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:367)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterWrapper$1.invoke(LayoutNodeLayoutDelegate.kt:361)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:120)
E/AndroidRuntime: at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:92)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterWrapper-f8xVGno(LayoutNodeLayoutDelegate.kt:361)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.replace(LayoutNodeLayoutDelegate.kt:382)
at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:911)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:418)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:39)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:329)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:771)
at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:215)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:991)
at android.view.View.draw(View.java:22538)
at android.view.View.updateDisplayListIfDirty(View.java:21389)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4525)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4498)
at android.view.View.updateDisplayListIfDirty(View.java:21349)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:647)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4448)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4175)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3422)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2206)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8763)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1352)
at android.view.Choreographer.doCallbacks(Choreographer.java:1149)
at android.view.Choreographer.doFrame(Choreographer.java:1049)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1333)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:233)
at android.app.ActivityThread.main(ActivityThread.java:8068)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
Right now I can't provide simple minimal example, but I hope the information above helps.
upd (15.08.22): after updating versions for some libraries the bug disappear:
implementation("androidx.compose.ui:ui:1.3.0-alpha02")
implementation("androidx.compose.material:material:1.3.0-alpha02")
implementation("androidx.compose.ui:ui-tooling:1.3.0-alpha02")
I.e. the problem is fixed, at least for me.
[Deleted User] <[Deleted User]> #6
Kotlin: 1.7.0
Compose Compiler: 1.2.0
Compose: 1.2.0 (stable)
Paging: 3.1.1
Paging Compose: 1.0.0-alpha15
Here is the stack trace:
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(SourceFile:1673)
at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(SourceFile:147)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelativeWithLayer-aW-9-wM(SourceFile:375)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelativeWithLayer-aW-9-wM$default(SourceFile:223)
at androidx.compose.foundation.lazy.LazyListPositionedItem.place(SourceFile:182)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke(SourceFile:303)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke
at androidx.compose.foundation.BorderKt$drawGenericBorder$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.foundation.lazy.LazyListMeasureResult.placeChildren
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1.placeChildren(SourceFile:602)
at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke
at androidx.compose.material.ripple.AndroidRippleIndicationInstance$onInvalidateRipple$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke
at androidx.compose.foundation.Clickable_androidKt$isComposeRootInScrollableContainer$1.invoke$bridge(SourceFile:0)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release
at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(SourceFile:953)
at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release
at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(SourceFile:79)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(SourceFile:393)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(SourceFile:266)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke$bridge(SourceFile:0)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke
at androidx.compose.foundation.BorderKt$drawGenericBorder$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(SourceFile:101)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(SourceFile:396)
at androidx.compose.ui.node.OuterMeasurablePlaceable.placeOuterWrapper-f8xVGno
at androidx.compose.ui.node.OuterMeasurablePlaceable.access$placeOuterWrapper-f8xVGno
at androidx.compose.ui.node.OuterMeasurablePlaceable$placeAt$1.invoke(SourceFile:149)
at androidx.compose.ui.node.OuterMeasurablePlaceable$placeAt$1.invoke(SourceFile:148)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release
at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(SourceFile:148)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(SourceFile:396)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM$default(SourceFile:286)
at androidx.compose.foundation.lazy.LazyListPositionedItem.place(SourceFile:180)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke(SourceFile:303)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke
at androidx.compose.foundation.BorderKt$drawGenericBorder$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.foundation.lazy.LazyListMeasureResult.placeChildren
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1.placeChildren(SourceFile:602)
at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke
at androidx.compose.material.ripple.AndroidRippleIndicationInstance$onInvalidateRipple$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke
at androidx.compose.foundation.Clickable_androidKt$isComposeRootInScrollableContainer$1.invoke$bridge(SourceFile:0)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release
at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(SourceFile:953)
at androidx.compose.ui.node.LayoutNode.onNodePlaced$ui_release
at androidx.compose.ui.node.InnerPlaceable.placeAt-f8xVGno(SourceFile:79)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(SourceFile:393)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(SourceFile:266)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$3.invoke$bridge(SourceFile:0)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke
at androidx.compose.foundation.BorderKt$drawGenericBorder$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(SourceFile:101)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.place(SourceFile:367)
at androidx.compose.ui.layout.Placeable$PlacementScope.place$default
at androidx.compose.foundation.layout.InsetsPaddingModifier$measure$1.invoke(SourceFile:138)
at androidx.compose.foundation.layout.InsetsPaddingModifier$measure$1.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.layout.InsetsPaddingModifier$measure$1.invoke(SourceFile:137)
at androidx.compose.foundation.layout.InsetsPaddingModifier$measure$1.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(SourceFile:101)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(SourceFile:359)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(SourceFile:179)
at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke
at androidx.compose.foundation.layout.OffsetModifier$measure$1.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke
at androidx.activity.compose.BackHandlerKt$BackHandler$2.invoke$bridge(SourceFile:0)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(SourceFile:70)
at androidx.compose.ui.node.ModifiedLayoutNode.placeAt-f8xVGno(SourceFile:101)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(SourceFile:370)
at androidx.compose.ui.node.OuterMeasurablePlaceable.placeOuterWrapper-f8xVGno
at androidx.compose.ui.node.OuterMeasurablePlaceable.access$placeOuterWrapper-f8xVGno
at androidx.compose.ui.node.OuterMeasurablePlaceable$placeAt$1.invoke(SourceFile:149)
at androidx.compose.ui.node.OuterMeasurablePlaceable$placeAt$1.invoke(SourceFile:148)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:2101)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:110)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release
at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release
at androidx.compose.ui.node.OuterMeasurablePlaceable.placeAt-f8xVGno(SourceFile:148)
at androidx.compose.ui.node.OuterMeasurablePlaceable.replace
at androidx.compose.ui.node.LayoutNode.replace$ui_release(SourceFile:826)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(SourceFile:228)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(SourceFile:767)
at androidx.compose.ui.node.LayoutNode.forceRemeasure(SourceFile:1457)
at androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release
at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke
at androidx.compose.foundation.ScrollState$scrollableState$1.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke
at androidx.compose.animation.AnimatedContentScope$SizeModifier$measure$size$2.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(SourceFile:136)
at androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-f0eR0lY(SourceFile:350)
at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke-MK-Hz9U
at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke
at androidx.compose.foundation.BorderKt$drawGenericBorder$1.invoke$bridge(SourceFile:0)
at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$scope$1.scrollBy(SourceFile:406)
at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2.invoke
at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2.invoke
at androidx.activity.compose.BackHandlerKt$BackHandler$2.invoke$bridge(SourceFile:0)
at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame(SourceFile:321)
at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrame
at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke
at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke
at androidx.compose.animation.core.Animatable$runAnimation$2$1.invoke$bridge(SourceFile:0)
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke
at androidx.compose.animation.EnterExitTransitionKt$expandVertically$2.invoke$bridge(SourceFile:0)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(SourceFile:71)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke
at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke$bridge(SourceFile:0)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(SourceFile:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1054)
at android.view.Choreographer.doCallbacks(Choreographer.java:880)
at android.view.Choreographer.doFrame(Choreographer.java:803)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:7822)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
zo...@gmail.com <zo...@gmail.com> #7
compose = '1.3.0-rc01'
compose-compiler = '1.3.2'
kotlin = '1.7.20'
vf...@costco.com <vf...@costco.com> #8
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1441)
at androidx.compose.ui.node.LayoutNode.getCollapsedSemantics$ui_release(LayoutNode.kt:421)
at androidx.compose.ui.semantics.SemanticsNodeKt.SemanticsNode(SemanticsNode.kt:48)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:252)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.unmergedChildren$ui_release(SemanticsNode.kt:236)
at androidx.compose.ui.semantics.SemanticsNode.getChildren(SemanticsNode.kt:310)
at androidx.compose.ui.semantics.SemanticsNode.getChildren(SemanticsNode.kt:268)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping$depthFirstSearch(AndroidComposeViewAccessibilityDelegateCompat.android.kt:706)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping(AndroidComposeViewAccessibilityDelegateCompat.android.kt:718)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping$depthFirstSearch(AndroidComposeViewAccessibilityDelegateCompat.android.kt:705)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping(AndroidComposeViewAccessibilityDelegateCompat.android.kt:718)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping$depthFirstSearch(AndroidComposeViewAccessibilityDelegateCompat.android.kt:705)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping$depthFirstSearch(AndroidComposeViewAccessibilityDelegateCompat.android.kt:712)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping(AndroidComposeViewAccessibilityDelegateCompat.android.kt:718)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.setTraversalValues(AndroidComposeViewAccessibilityDelegateCompat.android.kt:733)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes$ui_release(AndroidComposeViewAccessibilityDelegateCompat.android.kt:385)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:520)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:192)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3176)
at android.view.ViewRootImpl.handleWindowContentChangedEvent(ViewRootImpl.java:11480)
at android.view.ViewRootImpl.requestSendAccessibilityEvent(ViewRootImpl.java:11403)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1104)
sd...@nextdoor.com <sd...@nextdoor.com> #9
eg...@gmail.com <eg...@gmail.com> #10
If Talkback enabled we observe the same crash. Compose-BOM: 2023.08.00 androidx-navigation-compose:2.7.0
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1448)
at androidx.compose.ui.node.LayoutNode.getCollapsedSemantics$ui_release(LayoutNode.kt:421)
at androidx.compose.ui.semantics.SemanticsNodeKt.SemanticsNode(SemanticsNode.kt:48)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:252)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:254)
at androidx.compose.ui.semantics.SemanticsNode.unmergedChildren$ui_release(SemanticsNode.kt:236)
at androidx.compose.ui.semantics.SemanticsNode.getChildren(SemanticsNode.kt:310)
at androidx.compose.ui.semantics.SemanticsNode.getReplacedChildren$ui_release(SemanticsNode.kt:281)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3399)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3401)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3432)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes$ui_release(AndroidComposeViewAccessibilityDelegateCompat.android.kt:385)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:521)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:193)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3180)
at android.view.ViewRootImpl.handleWindowContentChangedEvent(ViewRootImpl.java:9344)
at android.view.ViewRootImpl.requestSendAccessibilityEvent(ViewRootImpl.java:9267)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1099)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1099)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1099)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1099)
at android.view.View.requestParentSendAccessibilityEvent(View.java:8349)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:8342)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:30117)
at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:201)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:117)
at android.view.View.sendAccessibilityEventUnchecked(View.java:8302)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:10347)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.removeCallbacksAndRun(ViewRootImpl.java:10402)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:10394)
ra...@gmail.com <ra...@gmail.com> #11
Please note:
Kotlin version 1.9.0
Compose version 1.5.1
pager 0.23.1
android studio : 2022.2.1
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1448)
at androidx.compose.ui.node.LayoutNode.invalidateSemantics$ui_release(LayoutNode.kt:412)
at androidx.compose.ui.node.SemanticsModifierNodeKt.invalidateSemantics(SemanticsModifierNode.kt:92)
at androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode.doInvalidations(TextAnnotatedStringNode.kt:210)
at androidx.compose.foundation.text.modifiers.TextAnnotatedStringElement.update(TextAnnotatedStringElement.kt:67)
at androidx.compose.foundation.text.modifiers.TextAnnotatedStringElement.update(TextAnnotatedStringElement.kt:36)
at androidx.compose.ui.node.NodeChainKt.updateUnsafe(NodeChain.kt:808)
at androidx.compose.ui.node.NodeChainKt.access$updateUnsafe(NodeChain.kt:1)
at androidx.compose.ui.node.NodeChain.updateNode(NodeChain.kt:653)
at androidx.compose.ui.node.NodeChain.updateFrom$ui_release(NodeChain.kt:138)
at androidx.compose.ui.node.LayoutNode.setModifier(LayoutNode.kt:844)
at androidx.compose.ui.node.ComposeUiNode$Companion$SetModifier$1.invoke(ComposeUiNode.kt:47)
at androidx.compose.ui.node.ComposeUiNode$Companion$SetModifier$1.invoke(ComposeUiNode.kt:47)
at androidx.compose.runtime.ComposerImpl$apply$operation$1.invoke(Composer.kt:1712)
at androidx.compose.runtime.ComposerImpl$apply$operation$1.invoke(Composer.kt:1710)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:818)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:625)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:537)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:970)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:727)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@4c9ab18, androidx.compose.ui.platform.MotionDurationScaleImpl@88f5971, StandaloneCoroutine{Cancelling}@afb356, AndroidUiDispatcher@df7bfd7]
ad...@salesforce.com <ad...@salesforce.com> #12
We are seeing the same thing using compose-bom 2023.06.01 and 2.5.3 for navigation. With talkback on, first tap to change tabs, is perfectly fine. Second tap to change to another tab causes the crash. Only on a tablet for us. Phone devices are perfectly fine.
su...@gmail.com <su...@gmail.com> #13
Fatal Exception: java.lang.IllegalArgumentException: onReuse is only expected on attached node
Fatal Exception: java.lang.IllegalStateException: LayoutNode should be attached to an owner
Kotlin version : 1.8.21
No issues with : 'androidx.compose:compose-bom:2022.10.00', and com.google.accompanist:accompanist-navigation-animation:0.30.1.
Have been using Horizontal Pager, with Accompanist Animated Nav controller and LazyColumn in one of the pages.
Upgraded to: 'androidx.compose:compose-bom:2023.08.00', and using Compose's Nav host removing Accompanist, and started getting the crash
My app is a Launcher app. It happened every time, I opened an app, pressed home to reach my launcher. Either it crashed immediately, or pressing home multiple times caused the crash.
sy...@gmail.com <sy...@gmail.com> #14
mi...@momox.biz <mi...@momox.biz> #15
jo...@gmail.com <jo...@gmail.com> #16
I have the same "java.lang.IllegalStateException: LayoutNode should be attached to an owner at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1448)"
It happens erratically but surely while switching between tabs in "HorizontalPager" and there is composition happening in the LazyColumn or LazyGrid at one of the Pager tabs. This is something we cannot fix our own. Below are the Compose versions.
androidx.compose.foundation.pager.HorizontalPager androidx.compose.foundation.pager.rememberPagerState kotlinCompilerExtensionVersion = "1.5.3" val compose_version = "1.5.0" val compose_runtime_version = "1.5.0" val compose_nav_version = "2.7.1"
to...@gmail.com <to...@gmail.com> #17
If you can build a small repro you can post in
From all my cases there, it's mostly clear there's a race when there's recomposition and scrolling but they need a repro.
jo...@gmail.com <jo...@gmail.com> #18
I found one possible solution to avoid the exception and learned the exact combination to reproduce the exception:
Exception repro
- HorizontalPager with at least 2 pages.
- The pages contain LazyColumn with itemsIndexed.
- Items are are injected in to the LazyColumn as MutableStateList or SnapShotStateList.
- The SnapShotStateList items are updated from a thread which does not know if user is switching between the pager tabs. The manipulation may include value and amount manipulation.
- Results in the crash while switching between the tabs multiple times. Might not crash immediately it depends...
Possible fix which has not resulted in the crash so far
- In the LazyColumn, create new list from the SnapShotStateList items either with .toList() or with forEach{} and inject that list in to the itemsIndexed
There should be a rule of thumb to never sinject MutableStateList or SnapShotStateList directly in to the LazyColumn with itemsIndexed. In the early times of Compose this kind of errors existed also in different events.
an...@google.com <an...@google.com> #19
Glad you found a workaround. Using SnapShotStateList directly inside of a lazy dsl block is more efficient, so we want this use case to work. I will try to reproduce it based on what you described. Maybe there is a chance you can share a code you mentioned so we have a reliable repro?
jo...@gmail.com <jo...@gmail.com> #20
I want to work too with direct SnapShotsStateLists, so maybe during weekend I could compile small version of the code... I cannot share the direct code as it is business related.
jo...@gmail.com <jo...@gmail.com> #21
mo...@hotstar.com <mo...@hotstar.com> #22
This intermittent issue happening with compose bom : 2023.08.00
as well.
an...@google.com <an...@google.com> #23
I wan't able to reproduce a crash with the provided repro, but what I see that after some time in some of the items Text is not drawn and Card is positioned in a wrong place, see the screenshot. Not sure why it is not crashing as it is crashing for you, but there is probably some issue with how we position the children. I will investigate
jo...@gmail.com <jo...@gmail.com> #24
Hmmm, those are not happening to me with the same setup.
The crash will happen eventually, I get it approx every 10 attempt while switching between the tab 1 & 2. It most likely happens right at the time when the API simulation loop with a 1 second delay starts adding new elements in to the snapshotLists and at the same time you are switching the tabs.
Inside the MyLazyColumn is the description how I get the Exception.
/**New list seems to make it robust against the Exception, else crashes with direct snapShotItems.
- To crash continue shifting with different paces between tabs 1 & 2 and possibly do manual PullToRefresh every now and then
- and continue shifting the tabs.*/
jo...@gmail.com <jo...@gmail.com> #25
Here is example video how to get it crash. I switch couple times and wait for the second at the tab 2 and switch back to tab 1.
an...@google.com <an...@google.com> #26
Ok, Unfortunately because there are multiple cases when the main error message is "LayoutNode should be attached to an owner" we combined a lot of not related crash reports in the same bugs. Lets try to bring some order so we can fix them one by one.
I tested this repro on Compose 1.5.1 and it is indeed crashing with
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1448)
at androidx.compose.ui.node.LayoutNode.invalidateSemantics$ui_release(LayoutNode.kt:412)
at androidx.compose.ui.node.SemanticsModifierNodeKt.invalidateSemantics(SemanticsModifierNode.kt:92)
at androidx.compose.foundation.text.modifiers.TextStringSimpleNode.doInvalidations(TextStringSimpleNode.kt:171)
at androidx.compose.foundation.text.modifiers.TextStringSimpleElement.update(TextStringSimpleElement.kt:56)
at androidx.compose.foundation.text.modifiers.TextStringSimpleElement.update(TextStringSimpleElement.kt:33)
I also see that it is not crashing anymore starting from 1.6.0-alpha01.
The crash with this stacktrace is tracked in
And I filed a separate bug for an issue I saw on a recent main where some of the items are not drawn (the screenshot attached in #23) -
The other stacktrace reported in this bug which looks like this:
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1441)
at androidx.compose.ui.node.LayoutNode.getCollapsedSemantics$ui_release(LayoutNode.kt:421)
at androidx.compose.ui.semantics.SemanticsNodeKt.SemanticsNode(SemanticsNode.kt:48)
at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:252)
will be tracked in
And finally the stacktrace looking similar to
3) java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1701)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterWrapper-f8xVGno(LayoutNodeLayoutDelegate.kt:360)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:346)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:31)
will be tracked in
We also had one report with a stack trace looking like
1) java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1481)
at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:83)
at androidx.compose.ui.node.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1314)
at androidx.constraintlayout.compose.Measurer.measure(ConstraintLayout.kt:1004)
But it was last reported 1.5 years ago. If someone can still reproduce a crash with such stacktrace please file a new bug.
With that I will close this bug so we can continue discussing individual issues in the appropriate bugs. Thanks
th...@gmail.com <th...@gmail.com> #27
This is reproducible in Compose 1.5.4/1.5.5 compiler/1.9.20 Kotlin, but stacktrace looks different :
ca...@gmail.com <ca...@gmail.com> #28
I'm experiencing crashes with almost the exact stack trace. Would like to know if there's anything fix planned, or any temporary workaround recommended.
Description
Android Studio Build:
Kotlin version: kotlinCompilerVersion '1.6.10'
Steps to Reproduce:
add permission and then get a crash
ConstraintLayout(
modifier = Modifier
.fillMaxSize()
) {
val locationPermissionsState = rememberMultiplePermissionsState(
listOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
)
)
if (locationPermissionsState.allPermissionsGranted) {
val localMarker = get<GetLocalPosition>().getCurrentPosition().observeAsState().value
val singapore = LatLng(1.35, 103.87)
GoogleMap(
modifier = Modifier.fillMaxSize(),
googleMapOptionsFactory = {
GoogleMapOptions().camera(CameraPosition.fromLatLngZoom(singapore, 10f))
}
) {
Marker(position = LatLng(-34.0, 151.0), title = "Marker in Sydney")
Marker(position = LatLng(35.66, 139.6), title = "Marker in Tokyo")
if (localMarker != null) {
Marker(position = localMarker, title = "It's you")
}
}
} else {
Column {
val allPermissionsRevoked =
locationPermissionsState.permissions.size ==
locationPermissionsState.revokedPermissions.size
val textToShow = if (!allPermissionsRevoked) {
// If not all the permissions are revoked, it's because the user accepted the COARSE
// location permission, but not the FINE one.
"Yay! Thanks for letting me access your approximate location. " +
"But you know what would be great? If you allow me to know where you " +
"exactly are. Thank you!"
} else if (locationPermissionsState.shouldShowRationale) {
// Both location permissions have been denied
"Getting your exact location is important for this app. " +
"Please grant us fine location. Thank you :D"
} else {
// First time the user sees this feature or the user doesn't want to be asked again
"This feature requires location permission"
}
val buttonText = if (!allPermissionsRevoked) {
"Allow precise location"
} else {
"Request permissions"
}
Text(text = textToShow)
Spacer(modifier = Modifier.height(8.dp))
Button(onClick = { locationPermissionsState.launchMultiplePermissionRequest() }) {
Text(buttonText)
}
}
}
}
2022-02-15 10:14:56.600 11152-11152/llc.onlycode.syndi E/AndroidRuntime: FATAL EXCEPTION: main
Process: llc.onlycode.syndi, PID: 11152
java.lang.IllegalStateException: LayoutNode should be attached to an owner
at androidx.compose.ui.node.LayoutNodeKt.requireOwner(LayoutNode.kt:1481)
at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:83)
at androidx.compose.ui.node.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1314)
at androidx.constraintlayout.compose.Measurer.measure(ConstraintLayout.kt:1004)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:466)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:278)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
at androidx.constraintlayout.compose.Measurer.performMeasure-DjhGOtQ(ConstraintLayout.kt:1235)
at androidx.constraintlayout.compose.ConstraintLayoutKt$rememberConstraintLayoutMeasurePolicy$1$measurePolicy$1.measure-3p2s80s(ConstraintLayout.kt:113)
at androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0(InnerPlaceable.kt:55)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.foundation.layout.FillModifier.measure-3p2s80s(Size.kt:658)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:99)
at androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke(OuterMeasurablePlaceable.kt:98)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1873)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:121)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:88)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:76)
at androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0(OuterMeasurablePlaceable.kt:98)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1323)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1319)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:170)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:246)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:38)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:191)
at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:740)
at android.view.View.measure(View.java:25466)
at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release(ComposeView.android.kt:302)
at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt:289)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
2022-02-15 10:14:56.601 11152-11152/llc.onlycode.syndi E/AndroidRuntime: at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)
at android.view.View.measure(View.java:25466)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3397)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2228)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2486)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)