Status Update
Comments
hb...@gmail.com <hb...@gmail.com> #2
Seems somewhat related to the accessibility requiring some sizes from the Layout node, over to Alex to triage properly.
In the meantime, ivanmitsura, could you provide a reproduction sample? Thanks would help us make it more actionable. Thanks
el...@gmail.com <el...@gmail.com> #3
hb...@gmail.com <hb...@gmail.com> #4
To assignee:
The code path starts from root and goes down the tree to children. By the time some child is checked, its ancestor (which was attached at the time the child was found) is already detached, causing this crash. Though I'm not sure how or why it happens.
To reporter:
I have a Samsung galaxy s6 devices, and I tested our demo app. But I didn't observe a crash.
Unfortunately, it's hard to do anything about this issue without a repro. If you happen to narrow down your code to repro sample, please add it here.
el...@gmail.com <el...@gmail.com> #5
Could not reproduce it though.
Fatal Exception: java.lang.RuntimeException: Unable to destroy activity {u.x.i/m.b.v.n}: java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4605)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4623)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
at androidx.compose.ui.node.LayoutNodeWrapper.getParentLayoutCoordinates(LayoutNodeWrapper.java:23)
at androidx.compose.ui.layout.LayoutCoordinatesKt.findRoot(LayoutCoordinatesKt.java:5)
at androidx.compose.ui.layout.LayoutCoordinatesKt.boundsInRoot(LayoutCoordinatesKt.java:5)
at androidx.compose.ui.semantics.SemanticsWrapper.touchBoundsInRoot(SemanticsWrapper.java:19)
at androidx.compose.ui.semantics.SemanticsNode.getTouchBoundsInRoot(SemanticsNode.java:4)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat_androidKt.java:33)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat_androidKt.java:115)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat_androidKt.java:41)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.java:10)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.java:9)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.java)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.java:2)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:7927)
at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:27518)
at android.view.View.createAccessibilityNodeInfo(View.java:7913)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:7867)
at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:27401)
at androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:2)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:2)
at android.view.View.onInitializeAccessibilityEvent(View.java:7853)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7717)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:27340)
at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:2)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:2)
at android.view.View.sendAccessibilityEventUnchecked(View.java:7700)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:9443)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:9469)
at android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:8395)
at android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:8570)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded(View.java:11910)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3800)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3796)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5456)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5403)
at android.view.ViewGroup.removeView(ViewGroup.java:5334)
at androidx.compose.ui.platform.AndroidComposeView.removeAndroidView(AndroidComposeView.java:9)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.java:19)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.java:2)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:56)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.java:122)
at androidx.compose.ui.node.LayoutNode.removeAll$ui_release(LayoutNode.java:32)
at androidx.compose.ui.node.UiApplier.onClear(UiApplier.java:6)
at androidx.compose.runtime.AbstractApplier.clear(AbstractApplier.java:10)
at androidx.compose.runtime.CompositionImpl.dispose(CompositionImpl.java:66)
at androidx.compose.ui.platform.WrappedComposition.dispose(WrappedComposition.java:29)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(WrappedComposition.java:14)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:14)
at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:71)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:41)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:19)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:9)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:30)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:10)
at androidx.lifecycle.ReportFragment.onDestroy(ReportFragment.java:5)
at android.app.Fragment.performDestroy(Fragment.java:2870)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1424)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1549)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1611)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManagerImpl.java:3045)
at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManagerImpl.java:3025)
at android.app.FragmentController.dispatchDestroy(FragmentController.java:245)
at android.app.Activity.performDestroy(Activity.java:7478)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1255)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4592)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4623)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
[Deleted User] <[Deleted User]> #6
Caused by java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
at androidx.compose.ui.node.LayoutNodeWrapper.getParentLayoutCoordinates(LayoutNodeWrapper.kt:168)
at androidx.compose.ui.layout.LayoutCoordinatesKt.findRoot(LayoutCoordinates.kt:158)
at androidx.compose.ui.semantics.SemanticsWrapper.touchBoundsInRoot(SemanticsWrapper.kt:88)
at androidx.compose.ui.semantics.SemanticsNode.getTouchBoundsInRoot(SemanticsNode.kt:93)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2518)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2533)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2559)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:228)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:337)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$sendScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt:113)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2391)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:7340)
at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:26518)
at android.view.View.createAccessibilityNodeInfo(View.java:7326)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:7280)
at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:26401)
at androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:257)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:76)
at android.view.View.onInitializeAccessibilityEvent(View.java:7266)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7130)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:26340)
at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:196)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:113)
at android.view.View.sendAccessibilityEventUnchecked(View.java:7113)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:9003)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:9029)
at android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:8071)
at android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:8246)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3736)
at android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded(View.java:11270)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3760)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3756)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5459)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5400)
at android.view.ViewGroup.removeView(ViewGroup.java:5331)
at androidx.compose.ui.platform.AndroidComposeView.removeAndroidView(AndroidComposeView.android.kt:618)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:276)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:275)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:363)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.removeAll$ui_release(LayoutNode.kt:269)
at androidx.compose.ui.node.UiApplier.onClear(UiApplier.android.kt:44)
at androidx.compose.runtime.AbstractApplier.clear(Applier.kt:210)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:495)
at androidx.compose.ui.platform.WrappedComposition.dispose(Wrapper.android.kt:171)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:179)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:284)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:302)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
at androidx.lifecycle.ReportFragment.onDestroy(ReportFragment.java:134)
at android.app.Fragment.performDestroy(Fragment.java:2870)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1424)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1549)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1612)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManagerImpl.java:3053)
at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManagerImpl.java:3033)
at android.app.FragmentController.dispatchDestroy(FragmentController.java:244)
at android.app.Activity.performDestroy(Activity.java:7257)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1249)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4570)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4601)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:231)
at android.app.ActivityThread.main(ActivityThread.java:6749)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Also have
Fatal Exception: java.lang.IllegalStateException: Compose Runtime internal error. Unexpected or incorrect use of the Compose internal runtime API (Start/end imbalance). Please report to Google or use
at androidx.compose.runtime.ComposerKt.composeRuntimeError(Composer.kt:3466)
at androidx.compose.runtime.ComposerImpl.finalizeCompose(Composer.kt:3550)
at androidx.compose.runtime.ComposerImpl.endRoot(Composer.kt:1237)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2588)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:2522)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:748)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:2987)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:431)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcomposeInto(SubcomposeLayout.kt:269)
at androidx.compose.ui.layout.SubcomposeLayoutState.access$subcomposeInto(SubcomposeLayout.kt:154)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:244)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:241)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.withNoObservations(SnapshotStateObserver.kt:142)
at androidx.compose.ui.node.OwnerSnapshotObserver.withNoSnapshotReadObservation$ui_release(OwnerSnapshotObserver.kt:55)
at androidx.compose.ui.node.LayoutNode.withNoSnapshotReadObservation$ui_release(LayoutNode.kt:1175)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:241)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:235)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose$ui_release(SubcomposeLayout.kt:224)
at androidx.compose.ui.layout.SubcomposeLayoutState$Scope.subcompose(SubcomposeLayout.kt:490)
at androidx.compose.foundation.lazy.layout.LazyLayoutPlaceablesProvider.getAndMeasure-0kLqBqw(LazyMeasurePolicy.kt:58)
at androidx.compose.foundation.lazy.list.LazyMeasuredItemProvider.getAndMeasure-oA9-DU0(LazyMeasuredItemProvider.kt:45)
at androidx.compose.foundation.lazy.list.LazyListMeasureKt.measureLazyList-wroFCeY(LazyListMeasure.kt:145)
at androidx.compose.foundation.lazy.list.LazyListKt$rememberLazyListMeasurePolicy$1$1.measure-3p2s80s(LazyList.kt:259)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke-0kLqBqw(LazyLayout.kt:55)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke(LazyLayout.kt:44)
at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:355)
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.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:306)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
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.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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1.measure-3p2s80s(RowColumnImpl.kt:147)
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.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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1.measure-3p2s80s(RowColumnImpl.kt:147)
at androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0(InnerPlaceable.kt:55)
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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.ui.layout.RootMeasurePolicy.measure-3p2s80s(RootMeasurePolicy.kt:38)
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.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
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:1798)
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:1317)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure(MeasureAndLayoutDelegate.kt:168)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:228)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:38)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:201)
at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:703)
at android.view.View.measure(View.java:27124)
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:27124)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
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.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
at android.view.View.measure(View.java:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:27124)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:632)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:453)
at androidx.constraintlayout.core.widgets.analyzer.Direct.solveVerticalMatchConstraint(Direct.java:750)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:505)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:544)
at androidx.constraintlayout.core.widgets.analyzer.Direct.solvingPass(Direct.java:224)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.layout(ConstraintWidgetContainer.java:693)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solveLinearSystem(BasicMeasure.java:160)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:291)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
at android.view.View.measure(View.java:27124)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
at android.view.View.measure(View.java:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
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:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
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:27124)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1237)
at android.view.View.measure(View.java:27124)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:4430)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:3135)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3427)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2831)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10311)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1063)
at android.view.Choreographer.doCallbacks(Choreographer.java:845)
at android.view.Choreographer.doFrame(Choreographer.java:780)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1048)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8641)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)
Fatal Exception: java.lang.NullPointerException
at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:292)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:857)
at android.view.View.draw(View.java:23904)
at android.view.View.updateDisplayListIfDirty(View.java:22776)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5320)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5292)
at android.view.View.updateDisplayListIfDirty(View.java:22731)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:579)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:585)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:662)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:5042)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4749)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3866)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9971)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
at android.view.Choreographer.doCallbacks(Choreographer.java:809)
at android.view.Choreographer.doFrame(Choreographer.java:744)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8653)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Fatal Exception: java.lang.IllegalStateException: Compose Runtime internal error. Unexpected or incorrect use of the Compose internal runtime API (Start/end imbalance). Please report to Google or use
at androidx.compose.runtime.ComposerKt.composeRuntimeError(Composer.kt:3466)
at androidx.compose.runtime.ComposerImpl.finalizeCompose(Composer.kt:3550)
at androidx.compose.runtime.ComposerImpl.endRoot(Composer.kt:1237)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2588)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:2522)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:748)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:2987)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:431)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcomposeInto(SubcomposeLayout.kt:269)
at androidx.compose.ui.layout.SubcomposeLayoutState.access$subcomposeInto(SubcomposeLayout.kt:154)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:244)
at androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke(SubcomposeLayout.kt:241)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.withNoObservations(SnapshotStateObserver.kt:142)
at androidx.compose.ui.node.OwnerSnapshotObserver.withNoSnapshotReadObservation$ui_release(OwnerSnapshotObserver.kt:55)
at androidx.compose.ui.node.LayoutNode.withNoSnapshotReadObservation$ui_release(LayoutNode.kt:1175)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:241)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose(SubcomposeLayout.kt:235)
at androidx.compose.ui.layout.SubcomposeLayoutState.subcompose$ui_release(SubcomposeLayout.kt:224)
at androidx.compose.ui.layout.SubcomposeLayoutState$Scope.subcompose(SubcomposeLayout.kt:490)
at androidx.compose.foundation.lazy.layout.LazyLayoutPlaceablesProvider.getAndMeasure-0kLqBqw(LazyMeasurePolicy.kt:58)
at androidx.compose.foundation.lazy.list.LazyMeasuredItemProvider.getAndMeasure-oA9-DU0(LazyMeasuredItemProvider.kt:45)
at androidx.compose.foundation.lazy.list.LazyListMeasureKt.measureLazyList-wroFCeY(LazyListMeasure.kt:145)
at androidx.compose.foundation.lazy.list.LazyListKt$rememberLazyListMeasurePolicy$1$1.measure-3p2s80s(LazyList.kt:259)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke-0kLqBqw(LazyLayout.kt:55)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke(LazyLayout.kt:44)
at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:355)
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.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:306)
at androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0(ModifiedLayoutNode.kt:39)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
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.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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1.measure-3p2s80s(RowColumnImpl.kt:147)
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.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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasurePolicy$1.measure-3p2s80s(RowColumnImpl.kt:147)
at androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0(InnerPlaceable.kt:55)
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.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126)
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.OuterMeasurablePlaceable.measure-BRTryo0(OuterMeasurablePlaceable.kt:75)
at androidx.compose.ui.node.LayoutNode.measure-BRTryo0(LayoutNode.kt:1308)
at androidx.compose.ui.layout.RootMeasurePolicy.measure-3p2s80s(RootMeasurePolicy.kt:38)
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.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0(DelegatingLayoutNodeWrapper.kt:131)
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:1798)
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:1317)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure(MeasureAndLayoutDelegate.kt:168)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:228)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:38)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:201)
at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:703)
at android.view.View.measure(View.java:17565)
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:17565)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
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.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at android.view.View.measure(View.java:17565)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:632)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:453)
at androidx.constraintlayout.core.widgets.analyzer.Direct.solveVerticalMatchConstraint(Direct.java:750)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:505)
at androidx.constraintlayout.core.widgets.analyzer.Direct.verticalSolvingPass(Direct.java:544)
at androidx.constraintlayout.core.widgets.analyzer.Direct.solvingPass(Direct.java:224)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.layout(ConstraintWidgetContainer.java:693)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solveLinearSystem(BasicMeasure.java:160)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:291)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
at android.view.View.measure(View.java:17565)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615)
at android.view.View.measure(View.java:17565)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2045)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1196)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1409)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1084)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5990)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
at androidx.compose.ui.node.LayoutNodeWrapper.getParentLayoutCoordinates(LayoutNodeWrapper.kt:168)
at androidx.compose.ui.layout.LayoutCoordinatesKt.findRoot(LayoutCoordinates.kt:158)
at androidx.compose.ui.semantics.SemanticsWrapper.touchBoundsInRoot(SemanticsWrapper.kt:88)
at androidx.compose.ui.semantics.SemanticsNode.getTouchBoundsInRoot(SemanticsNode.kt:93)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2518)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2533)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2559)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:228)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:337)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$sendScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt:113)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2391)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:7918)
at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:27418)
at android.view.View.createAccessibilityNodeInfo(View.java:7904)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:7858)
at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:27301)
at androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:257)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:76)
at android.view.View.onInitializeAccessibilityEvent(View.java:7844)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7708)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:27240)
at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:196)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:113)
at android.view.View.sendAccessibilityEventUnchecked(View.java:7691)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:9304)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:9330)
at android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:8267)
at android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:8442)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3776)
at android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded(View.java:11901)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3800)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3796)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5456)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5403)
at android.view.ViewGroup.removeView(ViewGroup.java:5334)
at androidx.compose.ui.platform.AndroidComposeView.removeAndroidView(AndroidComposeView.android.kt:618)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:276)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:275)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:363)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:374)
at androidx.compose.ui.node.LayoutNode.removeAll$ui_release(LayoutNode.kt:269)
at androidx.compose.ui.node.UiApplier.onClear(UiApplier.android.kt:44)
at androidx.compose.runtime.AbstractApplier.clear(Applier.kt:210)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:495)
at androidx.compose.ui.platform.WrappedComposition.dispose(Wrapper.android.kt:171)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:179)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:284)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:302)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
at androidx.lifecycle.ReportFragment.onDestroy(ReportFragment.java:134)
at android.app.Fragment.performDestroy(Fragment.java:2870)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1424)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1549)
at android.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1611)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManagerImpl.java:3045)
at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManagerImpl.java:3025)
at android.app.FragmentController.dispatchDestroy(FragmentController.java:245)
at android.app.Activity.performDestroy(Activity.java:7521)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1255)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4592)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4623)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
etc, etc, etc, I can go with those crashes in random places for hours. 99% of those crashes- samsungs. All of them after 6-8 hours of device sleep, still to this day I'm trying to figure out what compose view does this.
ad...@gmail.com <ad...@gmail.com> #7
Thanks for more details. Unfortunately, we couldn't reproduce it locally so we couldn't come up with a fix yet, we tried a few blind fixes that they didn't work so far.
Checking the crash stack we've got some new ideas for the potential fixes that are being verified.
Please keep us posted if you're able to reproduce the bug.
dz...@gmail.com <dz...@gmail.com> #8
Branch: androidx-main
commit c505dbf74711673fc60871fa6980899a7f70c068
Author: System Administrator <soboleva@google.com>
Date: Wed Mar 16 18:58:54 2022
Fix of crash in acessibility code path
It's a blind fix since the issue is not reproducable locally. The logs suggest the parent is getting detached while we're calculating the uncovered semantics nodes. It seems like the activity (and hence compose view) is destroyed but then the accessibility delegate is called. So this fix ensures that node info is not created if we're in destroyed state.
I'll keep the test that was failing flaky and re-enable it later after observing it for a while in CI.
Test: N/A
Bug: 206967867
Bug: 215116019
Change-Id: If9d3a20699056e39b40f27b6a674b9f96cee3420
M compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
ha...@gmail.com <ha...@gmail.com> #9
val data = state.anyData ?: return
crashes phones, while
val data = state.anyData
if(data != null){
//do your code
}
dont crashes phones.
And the best part is that emulator google pixel 5 with api 31 crashes 100% times instantly on my side with config of
kotlin_version = 1.6.10
compose_version = 1.1.1
and by running
@Composable
fun ComposeSplashUI() {
Box(
contentAlignment = Alignment.BottomEnd,
modifier = Modifier
.background(color = Color.Black)
.fillMaxSize()
) {
Text(text = "reachable and its fine")
return@Box
Text(text = "Unreachable and its fine")
}
}
java.lang.IllegalStateException: Compose Runtime internal error. Unexpected or incorrect use of the Compose internal runtime API (Start/end imbalance). Please report to Google or use
at androidx.compose.runtime.ComposerKt.composeRuntimeError(Composer.kt:3466)
at androidx.compose.runtime.ComposerImpl.finalizeCompose(Composer.kt:3550)
at androidx.compose.runtime.ComposerImpl.endRoot(Composer.kt:1237)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2588)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:2522)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:478)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:748)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:433)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:907)
at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:131)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:182)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:196)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:138)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:994)
at android.view.View.dispatchAttachedToWindow(View.java:20753)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3490)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2613)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2126)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8653)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
at android.view.Choreographer.doCallbacks(Choreographer.java:845)
at android.view.Choreographer.doFrame(Choreographer.java:780)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
at android.os.Handler.handleCallback(Handler.java:938)
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:7839)
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:1003)
which makes me think there is something wrong with returns in kotlin. Can you, please, confirm you have same issue?
en...@google.com <en...@google.com>
ja...@gmail.com <ja...@gmail.com> #10
Marking this bug as resolved for the original crash report in
ja...@onesheep.org <ja...@onesheep.org> #11
We have the same issue when navigating to GoogleMaps Compose on Android 7 devices (Samsung & Xiaomi).
soboleva@google.com, which version is going to include this fix?
Thanks
ad...@gmail.com <ad...@gmail.com> #12
The fix has been released in 1.2.0-alpha07.
Do you encounter an issue on later version?
rm...@massmutual.com <rm...@massmutual.com> #13
Fatal Exception: java.lang.IllegalStateException: LayoutCoordinate operations are only valid when isAttached is true
at androidx.compose.ui.node.LayoutNodeWrapper.getParentLayoutCoordinates(LayoutNodeWrapper.kt:199)
at androidx.compose.ui.layout.LayoutCoordinatesKt.findRoot(LayoutCoordinates.kt:158)
at androidx.compose.ui.layout.LayoutCoordinatesKt.boundsInRoot(LayoutCoordinates.kt:114)
at androidx.compose.ui.semantics.SemanticsEntity.touchBoundsInRoot(SemanticsEntity.kt:67)
at androidx.compose.ui.semantics.SemanticsNode.getTouchBoundsInRoot(SemanticsNode.kt:100)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2553)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2568)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2568)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2568)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2594)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:230)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:344)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:115)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2424)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:7263)
at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:26009)
at android.view.View.createAccessibilityNodeInfo(View.java:7249)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:7203)
at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:25892)
at androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:265)
at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:80)
at android.view.View.onInitializeAccessibilityEvent(View.java:7189)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7053)
at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:25831)
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:7036)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:7920)
at android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:7946)
at android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:7057)
at android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:7232)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:3571)
at android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded(View.java:11193)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3595)
at android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded(ViewGroup.java:3591)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5247)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5194)
at android.view.ViewGroup.removeView(ViewGroup.java:5125)
at androidx.compose.ui.platform.AndroidComposeView.removeAndroidView(AndroidComposeView.android.kt:695)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:290)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$4.invoke(AndroidViewHolder.android.kt:289)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:358)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.detach$ui_release(LayoutNode.kt:369)
at androidx.compose.ui.node.LayoutNode.removeAt$ui_release(LayoutNode.kt:245)
at androidx.compose.ui.node.UiApplier.remove(UiApplier.android.kt:35)
at androidx.compose.runtime.ComposerImpl$realizeMovement$1.invoke(Composer.kt:3626)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:763)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:794)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:526)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:454)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
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:964)
at android.view.Choreographer.doCallbacks(Choreographer.java:778)
at android.view.Choreographer.doFrame(Choreographer.java:710)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:169)
at android.app.ActivityThread.main(ActivityThread.java:6585)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
ma...@googlemail.com <ma...@googlemail.com> #14
When debugging through the code to try to understand it, the test passed. So it looks like some race condition when finishing the test.
I added a call to `composeTestRule.waitForIdle()` at the end and they pass now:
You can clone the repo and run this test removing the `composeTestRule.waitForIdle()` call to reproduce:
ma...@gmail.com <ma...@gmail.com> #15
ko...@gmail.com <ko...@gmail.com> #16
We are currently migrating to api33 with upgrading everything we got, including compose, I'l give more info after the migration end(2 weeks) + few days on real phones
ko...@gmail.com <ko...@gmail.com> #17
Seems that the issue is only happening on Android 8 (& 7) devices and mostly on Samsung.
So far Samsung S7, Tab S2 and S7 Edge are most affected but also other Samsung devices (A3, J5, S6, Tab A).
androidx.compose.ui.node.LayoutNodeWrapper.getParentLayoutCoordinates (LayoutNodeWrapper.kt:168)
androidx.compose.ui.layout.LayoutCoordinatesKt.findRoot (LayoutCoordinatesKt.java:158)
androidx.compose.ui.layout.LayoutCoordinatesKt.boundsInRoot (LayoutCoordinatesKt.java:114)
androidx.compose.ui.semantics.NodeLocationHolder$compareTo$child2$1.invoke (SemanticsSort.kt:148)
androidx.compose.ui.semantics.NodeLocationHolder$compareTo$child2$1.invoke (SemanticsSort.kt:146)
androidx.compose.ui.semantics.SemanticsSortKt.findNodeByPredicateTraversal (SemanticsSortKt.java:174)
androidx.compose.ui.semantics.SemanticsSortKt.findNodeByPredicateTraversal (SemanticsSortKt.java:179)
androidx.compose.ui.semantics.SemanticsSortKt.findNodeByPredicateTraversal (SemanticsSortKt.java:179)
androidx.compose.ui.semantics.SemanticsSortKt.findNodeByPredicateTraversal (SemanticsSortKt.java:179)
androidx.compose.ui.semantics.NodeLocationHolder.compareTo (SemanticsSort.kt:146)
androidx.compose.ui.semantics.NodeLocationHolder.compareTo (SemanticsSort.kt:66)
java.util.ComparableTimSort.countRunAndMakeAscending (ComparableTimSort.java:320)
java.util.ComparableTimSort.sort (ComparableTimSort.java:188)
java.util.Arrays.sort (Arrays.java:1312)
java.util.Arrays.sort (Arrays.java:1491)
java.util.ArrayList.sort (ArrayList.java:1470)
java.util.Collections.sort (Collections.java:201)
java.util.Collections.sort (Collections.java:156)
kotlin.collections.CollectionsKt__MutableCollectionsJVMKt.sort (MutableCollectionsJVM.kt:31)
androidx.compose.ui.semantics.SemanticsSortKt.findOneLayerOfSemanticsWrappersSortedByBounds$sortWithStrategy (SemanticsSortKt.java:37)
androidx.compose.ui.semantics.SemanticsSortKt.findOneLayerOfSemanticsWrappersSortedByBounds (SemanticsSortKt.java:53)
androidx.compose.ui.semantics.SemanticsSortKt.findOneLayerOfSemanticsWrappersSortedByBounds (SemanticsSortKt.java:60)
androidx.compose.ui.semantics.SemanticsSortKt.findOneLayerOfSemanticsWrappersSortedByBounds$default (SemanticsSortKt.java:28)
androidx.compose.ui.semantics.SemanticsNode.unmergedChildren$ui_release (SemanticsNode.kt:194)
androidx.compose.ui.semantics.SemanticsNode.getChildren (SemanticsNode.kt:278)
androidx.compose.ui.semantics.SemanticsNode.getReplacedChildrenSortedByBounds$ui_release (SemanticsNode.java:245)
androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.populateAccessibilityNodeInfoProperties (AndroidComposeViewAccessibilityDelegateCompat.java:422)
androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.java:371)
androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.java:113)
androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.android.kt:2391)
android.view.View.createAccessibilityNodeInfoInternal (View.java:7918)
android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo (View.java:27418)
android.view.View.createAccessibilityNodeInfo (View.java:7904)
android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:146)
android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:119)
android.view.View.onInitializeAccessibilityEventInternal (View.java:7858)
android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent (View.java:27301)
androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent (AccessibilityDelegateCompat.java:257)
androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent (AccessibilityDelegateCompat.java:76)
android.view.View.onInitializeAccessibilityEvent (View.java:7844)
android.view.View.sendAccessibilityEventUncheckedInternal (View.java:7708)
android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked (View.java:27240)
androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked (AccessibilityDelegateCompat.java:196)
androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked (AccessibilityDelegateCompat.java:113)
android.view.View.sendAccessibilityEventUnchecked (View.java:7691)
android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run (ViewRootImpl.java:9304)
android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost (ViewRootImpl.java:9330)
android.view.ViewRootImpl.postSendWindowContentChangedCallback (ViewRootImpl.java:8267)
android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged (ViewRootImpl.java:8442)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3776)
android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded (View.java:11901)
android.view.ViewGroup.notifySubtreeAccessibilityStateChangedIfNeeded (ViewGroup.java:3800)
android.view.ViewGroup.addViewInner (ViewGroup.java:5184)
android.view.ViewGroup.addView (ViewGroup.java:4953)
android.view.ViewGroup.addView (ViewGroup.java:4893)
android.view.ViewGroup.addView (ViewGroup.java:4866)
androidx.compose.ui.platform.AndroidComposeView.getAndroidViewsHandler$ui_release (AndroidComposeView.android.kt:284)
androidx.compose.ui.platform.AndroidComposeView.addAndroidView (AndroidComposeView.java:585)
androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$3.invoke (AndroidViewHolder.android.kt:272)
androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$3.invoke (AndroidViewHolder.android.kt:271)
androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:344)
androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:337)
androidx.compose.ui.node.LayoutNode.insertAt$ui_release (LayoutNode.kt:222)
androidx.compose.ui.node.UiApplier.insertBottomUp (UiApplier.android.kt:32)
androidx.compose.ui.node.UiApplier.insertBottomUp (UiApplier.android.kt:22)
androidx.compose.runtime.ComposerImpl$createNode$3.invoke (Composer.kt:1376)
androidx.compose.runtime.ComposerImpl$createNode$3.invoke (Composer.kt:1371)
androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke (Composer.kt:2768)
androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke (Composer.kt:2765)
androidx.compose.runtime.CompositionImpl.applyChanges (Composition.kt:637)
androidx.compose.runtime.Recomposer.composeInitial$runtime_release (Recomposer.kt:763)
androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release (Composer.kt:2987)
androidx.compose.runtime.CompositionImpl.setContent (Composition.kt:431)
androidx.compose.ui.layout.SubcomposeLayoutState.subcomposeInto (SubcomposeLayout.kt:269)
androidx.compose.ui.layout.SubcomposeLayoutState.access$subcomposeInto (SubcomposeLayout.kt:154)
androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke (SubcomposeLayoutState.java:244)
androidx.compose.ui.layout.SubcomposeLayoutState$subcompose$2.invoke (SubcomposeLayoutState.java:241)
androidx.compose.runtime.snapshots.SnapshotStateObserver.withNoObservations (SnapshotStateObserver.java:142)
androidx.compose.ui.node.OwnerSnapshotObserver.withNoSnapshotReadObservation$ui_release (OwnerSnapshotObserver.java:55)
androidx.compose.ui.node.LayoutNode.withNoSnapshotReadObservation$ui_release (LayoutNode.java:1175)
androidx.compose.ui.layout.SubcomposeLayoutState.subcompose (SubcomposeLayout.kt:241)
androidx.compose.ui.layout.SubcomposeLayoutState.subcompose (SubcomposeLayout.kt:235)
androidx.compose.ui.layout.SubcomposeLayoutState.subcompose$ui_release (SubcomposeLayoutState.java:224)
androidx.compose.ui.layout.SubcomposeLayoutState$Scope.subcompose (SubcomposeLayout.kt:490)
androidx.compose.foundation.lazy.layout.LazyLayoutPlaceablesProvider.getAndMeasure-0kLqBqw (LazyMeasurePolicy.kt:58)
androidx.compose.foundation.lazy.list.LazyMeasuredItemProvider.getAndMeasure-oA9-DU0 (LazyMeasuredItemProvider.java:45)
androidx.compose.foundation.lazy.list.LazyListMeasureKt.measureLazyList-wroFCeY (LazyListMeasureKt.java:145)
androidx.compose.foundation.lazy.list.LazyListKt$rememberLazyListMeasurePolicy$1$1.measure-3p2s80s (LazyList.kt:259)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke-0kLqBqw (LazyLayout.kt:55)
androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$2.invoke (LazyLayout.kt:44)
androidx.compose.ui.layout.SubcomposeLayoutState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:355)
androidx.compose.ui.node.InnerPlaceable.measure-BRTryo0 (InnerPlaceable.kt:55)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s (GraphicsLayerModifier.kt:306)
androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0 (ModifiedLayoutNode.kt:39)
androidx.compose.ui.node.DelegatingLayoutNodeWrapper.measure-BRTryo0 (DelegatingLayoutNodeWrapper.kt:131)
androidx.compose.foundation.layout.FillModifier.measure-3p2s80s (Size.kt:658)
androidx.compose.ui.node.ModifiedLayoutNode.measure-BRTryo0 (ModifiedLayoutNode.kt:39)
androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke (OuterMeasurablePlaceable.kt:99)
androidx.compose.ui.node.OuterMeasurablePlaceable$remeasure$2.invoke (OuterMeasurablePlaceable.kt:98)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.java:1798)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:121)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:88)
androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.java:76)
androidx.compose.ui.node.OuterMeasurablePlaceable.remeasure-BRTryo0 (OuterMeasurablePlaceable.kt:98)
androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release (LayoutNode.kt:1317)
androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default (LayoutNode.kt:1313)
androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure (MeasureAndLayoutDelegate.kt:170)
androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded (MeasureAndLayoutDelegate.kt:228)
androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded (MeasureAndLayoutDelegate.kt:38)
androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout (MeasureAndLayoutDelegate.kt:201)
androidx.compose.ui.platform.AndroidComposeView.measureAndLayout (AndroidComposeView.android.kt:662)
androidx.compose.ui.node.Owner$DefaultImpls.measureAndLayout$default (Owner.kt:182)
androidx.compose.ui.platform.AndroidComposeView.dispatchDraw (AndroidComposeView.android.kt:846)
android.view.View.draw (View.java:20376)
android.view.View.updateDisplayListIfDirty (View.java:19318)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4405)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4385)
android.view.View.updateDisplayListIfDirty (View.java:19277)
android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:686)
android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:692)
android.view.ThreadedRenderer.draw (ThreadedRenderer.java:800)
android.view.ViewRootImpl.draw (ViewRootImpl.java:3496)
android.view.ViewRootImpl.performDraw (ViewRootImpl.java:3283)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2818)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1780)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7827)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:911)
android.view.Choreographer.doCallbacks (Choreographer.java:723)
android.view.Choreographer.doFrame (Choreographer.java:658)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
android.os.Handler.handleCallback (Handler.java:789)
android.os.Handler.dispatchMessage (Handler.java:98)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:6944)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
ko...@gmail.com <ko...@gmail.com> #18
jp...@gmail.com <jp...@gmail.com> #19
Steps to reproduce or a workaround will be a godsend. Can confirm we're getting this crash a lot and 100% on Samsung and Android 8.0. 99% on a 'Galaxy Feel' device.
ca...@callumtaylor.net <ca...@callumtaylor.net> #20
Create a sample app can 100% reproduce on Samsung Galaxy S9 Android version 8.0.0, hope it could help to clarify the issue.
It contains only Compose Navigation and selectable Android TextView.
Reproduce steps:
1. Click button to next screen
2. Long press text to show selection menu
3. Press back key to cancel selection menu
4. Press back key to previous screen
5. Crash
Test on both Compose ui version "1.2.0-rc02" & "1.3.0-beta01", both crash but the logs are different.
Thanks.
lb...@gmail.com <lb...@gmail.com> #21
Is there anything the community can do in order to get this bug fixed? And is it possible to bump the priority? Despite it occurs mostly on older OS versions, this issue causes the top crash in our app, affecting more than 4K Android 8 users in the past quarter, with devices from all over the spectrum (in decreasing order of occurrences: Samsung, LGE, Huawei, Xiaomi, Motorola, Sony, OnePlus, HTC, Asus, Lenovo, ZTE, Wiko, Sharp, Doogee, BullittGroupLimited, Blackview, Infix Mobility Limited, Shift, Techain).
Interestingly enough there is a single user with Android 10 (KTE M8) who also faces the problem.
Description
I noticed a strange random behavior; sometimes the title in the action bar is truncated even if I have enough place. I've seen the issue in: 4.0.4 ICS smartphone as well as in a 7" tablet in landscape mode.
The title is something like: This is a trunc...