Status Update
Comments
ri...@ffw.com <ri...@ffw.com> #3
Any chance you could provide a way to repro this crash?
ae...@google.com <ae...@google.com> #4
Andrey, could you verify if this is the same root cause as
BTW, the question in #3 was meant for folks who made
ti...@gmail.com <ti...@gmail.com> #5
ae...@google.com <ae...@google.com> #6
I have a way to repro inside my app but not yet fully back to try to extract something I can share.
I just quickly tested latest SNAPSHOT (10683443) and now the error is different and requires a lot more scrolls to trigger.
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:697)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeAt-f8xVGno(LayoutNodeLayoutDelegate.kt:681)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:34)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM(Placeable.kt:489)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer-aW-9-wM$default(Placeable.kt:320)
at androidx.compose.foundation.lazy.LazyListMeasuredItem.place(LazyListMeasuredItem.kt:182)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$8.invoke(LazyListMeasure.kt:352)
at androidx.compose.foundation.lazy.LazyListMeasureKt$measureLazyList$8.invoke(LazyListMeasure.kt:349)
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-3p2s80s$$inlined$createMeasureResult$1.placeChildren(SubcomposeLayout.kt:951)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:379)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1.invoke(LayoutNodeLayoutDelegate.kt:371)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:473)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
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:371)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.onNodePlaced$ui_release(LayoutNodeLayoutDelegate.kt:515)
at androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno(InnerNodeCoordinator.kt:160)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:34)
at androidx.compose.ui.layout.Placeable$PlacementScope.place(Placeable.kt:460)
at androidx.compose.ui.layout.Placeable$PlacementScope.place$default(Placeable.kt:218)
at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1.invoke(AndroidOverscroll.kt:588)
at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1.invoke(AndroidOverscroll.kt:587)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:172)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:34)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:486)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:299)
at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1.invoke(AndroidOverscroll.kt:576)
at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1.invoke(AndroidOverscroll.kt:569)
at androidx.compose.ui.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:172)
14:54:13.754 AndroidRuntime app.symfonik.music.player.debug E at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:34)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:486)
at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:299)
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.layout.MeasureScope$layout$1.placeChildren(MeasureScope.kt:70)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:172)
at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:34)
at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:463)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1.invoke(LayoutNodeLayoutDelegate.kt:709)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1.invoke(LayoutNodeLayoutDelegate.kt:704)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:473)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
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:704)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.replace(LayoutNodeLayoutDelegate.kt:730)
at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:917)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(MeasureAndLayoutDelegate.kt:426)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(AndroidComposeView.android.kt:920)
at androidx.compose.ui.node.LayoutNode.forceRemeasure(LayoutNode.kt:1221)
at androidx.compose.foundation.lazy.LazyListState.snapToItemIndexInternal$foundation_release(LazyListState.kt:271)
at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invokeSuspend(LazyListState.kt:263)
at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invoke(Unknown Source:8)
at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invoke(Unknown Source:4)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invokeSuspend(ScrollableState.kt:181)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(Unknown Source:8)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(Unknown Source:4)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invokeSuspend(MutatorMutex.kt:173)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(Unknown Source:8)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at androidx.compose.foundation.MutatorMutex.mutateWith(MutatorMutex.kt:166)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invokeSuspend(ScrollableState.kt:178)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(Unknown Source:8)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
14:54:13.755 AndroidRuntime app.symfonik.music.player.debug E at androidx.compose.foundation.gestures.DefaultScrollableState.scroll(ScrollableState.kt:177)
at androidx.compose.foundation.lazy.LazyListState.scroll(LazyListState.kt:287)
at androidx.compose.foundation.gestures.ScrollableState.scroll$default(ScrollableState.kt:53)
at androidx.compose.foundation.lazy.LazyListState.scrollToItem(LazyListState.kt:262)
at app.symfonik.core.ui.common.lazylist.LazyColumnScrollbarKt$LazyColumnScrollbar$setScrollOffset$1.invokeSuspend(LazyColumnScrollbar.kt:164)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(AndroidUiDispatcher.android.kt:81)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:68)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7918)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@379b64b, androidx.compose.runtime.BroadcastFrameClock@95fa828, StandaloneCoroutine{Cancelling}@9e6f941, AndroidUiDispatcher@901ee6]
And for my case, this is an 1.6 A3 issue, reverting to 1.6 A2 (And M3 to 1.2 A4) does fix this at 100%
re...@apadmi.com <re...@apadmi.com> #7
I just quickly tested latest SNAPSHOT (10683443) and now the error is different and requires a lot more scrolls to trigger.
Thanks for verifying. The snapshot above contains our fix for placement that affected lookahead. Given that the issue is a lot more difficult to trigger, it's likely the result of the fix. The new stacktrace seems like a different issue.
Andrey, could you take a look at the stacktrace in
ae...@google.com <ae...@google.com> #8
The original stacktrace which has "forceMeasureTheSubtree" in it is the one fixed by aosp/2698053 which should be a part of the next alpha. However the new one "LayoutNode should be attached to an owner" is something new and I don't have immediate ideas what it can be related to. We will need a way to reproduce it, maybe you can try to come up with a sample project?
da...@well.co <da...@well.co> #9
Since it will still crash in A4 for my app, I'm reverting to A2 and a little out of delay so lack time this week to try to extract a repro that will probably be complicated as only crashing in a specific screen.
I can still add some logs / test things if you have idea to gain time on this. (Like what I could remove from that screen to pinpoint,...)
ti...@gmail.com <ti...@gmail.com> #10
First please try to test if it is related to lookahead. If you remove a LookaheadScope will it still crash? Then "LayoutNode should be attached to an owner" naturally can mean trying to scroll a state associated with an already disposed lazy list. I see that the scroll itself happens from some Scrollbars coroutine scope. Maybe the scrollbar lives longer than the list itself?
ae...@google.com <ae...@google.com> #11
I do not on purpose use LookaheadScope anywhere in my code yet. Waiting for an official shared transition stuff for that.
I do not think it's possible for the scrollbar to outlive the lazylist and there's no way to trigger a crash in 1.6 A2 or before. Is there a way to detect this on the scrolling call side so that I can prevent this?
es...@mo2o.com <es...@mo2o.com> #12
I don't yet understand what exactly is happening here so I don't know how to detect or workaround it. I am also not sure how to figure out what is the issue here without being able to reproduce it on my end unfortunately
is...@google.com <is...@google.com>
gr...@google.com <gr...@google.com>
cl...@google.com <cl...@google.com> #13
Well I'll see what I can do on my side but it's still an A3/A4 regression.
Compose internal debugging is quite hard for random guys like me :p
ma...@braininhand.co.uk <ma...@braininhand.co.uk> #14
So did a stupid random test with a try/catch over the scroll calls.
This leads to another crash maybe it have info in it?
Exception dispatching input event.
20:31:21.384 MessageQueue-JNI app.symfonik.music.player.debug E Exception in MessageQueue callback: handleReceiveCallback
20:31:21.386 MessageQueue-JNI app.symfonik.music.player.debug E java.lang.IllegalStateException: visitLocalDescendants called on an unattached node
at androidx.compose.ui.node.NodeCoordinator.shouldSharePointerInputWithSiblings(NodeCoordinator.kt:1685)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:222)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:595)
at androidx.compose.ui.node.NodeCoordinator.access$hit-1hIXUjU(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:599)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:597)
at androidx.compose.ui.node.HitTestResult.hitInMinimumTouchTarget(HitTestResult.kt:117)
at androidx.compose.ui.node.HitTestResult.hit(HitTestResult.kt:97)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:597)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:546)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:595)
at androidx.compose.ui.node.NodeCoordinator.access$hit-1hIXUjU(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:599)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:597)
at androidx.compose.ui.node.HitTestResult.hitInMinimumTouchTarget(HitTestResult.kt:117)
at androidx.compose.ui.node.HitTestResult.hit(HitTestResult.kt:97)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:597)
at androidx.compose.ui.node.NodeCoordinator.access$hit-1hIXUjU(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:599)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:597)
at androidx.compose.ui.node.HitTestResult.hitInMinimumTouchTarget(HitTestResult.kt:117)
at androidx.compose.ui.node.HitTestResult.hit(HitTestResult.kt:97)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:597)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:546)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:595)
at androidx.compose.ui.node.NodeCoordinator.access$hit-1hIXUjU(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:599)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:597)
20:31:21.386 MessageQueue-JNI app.symfonik.music.player.debug E at androidx.compose.ui.node.HitTestResult.hitInMinimumTouchTarget(HitTestResult.kt:117)
at androidx.compose.ui.node.HitTestResult.hit(HitTestResult.kt:97)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:597)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:546)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
20:31:21.386 MessageQueue-JNI app.symfonik.music.player.debug E at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:595)
at androidx.compose.ui.node.NodeCoordinator.access$hit-1hIXUjU(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:599)
at androidx.compose.ui.node.NodeCoordinator$hit$1.invoke(NodeCoordinator.kt:597)
at androidx.compose.ui.node.HitTestResult.hitInMinimumTouchTarget(HitTestResult.kt:117)
at androidx.compose.ui.node.HitTestResult.hit(HitTestResult.kt:97)
at androidx.compose.ui.node.NodeCoordinator.hit-1hIXUjU(NodeCoordinator.kt:597)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:546)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
20:31:21.386 MessageQueue-JNI app.symfonik.music.player.debug E at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.NodeCoordinator.hitTestChild-YqVAtuI(NodeCoordinator.kt:695)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.NodeCoordinator$Companion$PointerInputSource$1.childHitTest-YqVAtuI(NodeCoordinator.kt:1235)
at androidx.compose.ui.node.InnerNodeCoordinator.hitTestChild-YqVAtuI(InnerNodeCoordinator.kt:210)
at androidx.compose.ui.node.NodeCoordinator.hitTest-YqVAtuI(NodeCoordinator.kt:543)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release(LayoutNode.kt:951)
at androidx.compose.ui.node.LayoutNode.hitTest-M_7yMNQ$ui_release$default(LayoutNode.kt:944)
at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:99)
at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1496)
at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1447)
at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1387)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2745)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2745)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2745)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2745)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:500)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1912)
at android.app.Activity.dispatchTouchEvent(Activity.java:4299)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:458)
at android.view.View.dispatchPointerEvent(View.java:15309)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6778)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6578)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6034)
20:31:21.386 MessageQueue-JNI app.symfonik.music.player.debug E at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6091)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6057)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6222)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6065)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6279)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6038)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6091)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6057)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6065)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6038)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9206)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9157)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9126)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9329)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:161)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7918)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Seems to occur when I fast scroll and let press and move over the navigation bar (gesture mode on pixel), but relatively rare.
jm...@google.com <jm...@google.com> #15
Is an item inside this scrollable list some instance of SubcomposeLayout as well? For example LazyRow inside a LazyColumn, or maybe BoxWithConstraints. If yes, can you reproduce it when there is no extra Subcomposition inside it?
so...@google.com <so...@google.com>
be...@google.com <be...@google.com> #16
No I've removed everything and there's nothing inside the LazyList that is Subcompose.
Only the scrollbar that is outside is a BoxWithConstraints
I can even reproduce the last crash with Box (modifier = Modifier.size(80.dp).fillMaxWidth())
as the items.
The only difference I can spot in that screen from the others is that I use:
itemsIndexed(items = playlistEntriesItems, key = { _, item -> item.id }) { index, item ->
And in the other screen that I can't make crash it's all
items(
count = lazyPagingItems.itemCount,
key = lazyPagingItems.itemKey { it.id },
contentType = lazyPagingItems.itemContentType(),
) { index ->
Can't test more for now, will see if I can extract something end of week or early next week if you have no more ideas :(
Description
STEPS TO REPRODUCE
Navigation code taken from
First screen: Several Buttons inside a Column with a verticalScroll Modifier. Each button uses the NavController to navigate to the second screen.
Second screen: Several elements inside a LazyColumn.
1) Enable TalkBack
2) Navigate from the first screen to the second screen.
EXPECTED RESULTS
After navigating to the second screen, TalkBack should be focused on the first element.
OBSERVED RESULTS
After navigating to the second screen, TalkBack is focused on a different element depending on which button was used to navigate.
-------------------------------------------
TALKBACK VERSION: Seen on a variety of devices (eg. 13.1.0.501229322 (60129523))
ANDROID VERSION: Seen on a variety of devices (eg. Oxygen OS 11.1.10.10.AC01BA)
DEVICE MODEL: Seen on a variety of devices (eg. 11)