Status Update
Comments
so...@google.com <so...@google.com> #2
We could add an API to make the weighted distance customizable, aosp/3271691 has more info.
ko...@dumps.app <ko...@dumps.app> #3
Jetpack Compose version: 1.7.0-alpha08 Jetpack Compose compiler: 1.5.13 Jetpack Compose component used: UI Android Studio Build: jellyfish Kotlin version: 1.9.23
I believe this is the same issue I ran into locally. I don't know what a minimal repro is, but this is crashing for me when items in a LazyRow recompose (if I make all the items static no crash).
If I downgrade to compiler 1.5.12 (without strong skipping), I can no longer repro.
Here's an non-minified stack trace:
FATAL EXCEPTION: main
Process: fm.here.android.debug, PID: 29657
java.lang.NullPointerException: Attempt to read from field 'androidx.compose.ui.node.LayoutNodeLayoutDelegate androidx.compose.ui.node.LayoutNode.layoutDelegate' on a null object reference in method 'void androidx.compose.ui.node.LayoutNode.onChildRemoved(androidx.compose.ui.node.LayoutNode)'
at androidx.compose.ui.node.LayoutNode.onChildRemoved(LayoutNode.kt:363)
at androidx.compose.ui.node.LayoutNode.removeAt$ui_release(LayoutNode.kt:340)
at androidx.compose.ui.node.UiApplier.remove(UiApplier.android.kt:35)
at androidx.compose.runtime.changelist.Operation$RemoveNode.execute(Operation.kt:468)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:309)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:81)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:678)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:578)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1648)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1659)
at android.view.Choreographer.doCallbacks(Choreographer.java:1129)
at android.view.Choreographer.doFrame(Choreographer.java:1045)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1622)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8893)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@e6d435f, androidx.compose.ui.platform.MotionDurationScaleImpl@986d1ac, StandaloneCoroutine{Cancelling}@951de75, AndroidUiDispatcher@d218e0a]
gr...@gmail.com <gr...@gmail.com> #4
Compose BOM : 2024.05.00
Compose ui : 1.7.0-alpha08
Compose Material3 : 1.3.0-alpha06
Compose Foundation : 1.7.0-alpha08
First render compose screen well, but when recomposition triggered the issue appeared.
It appeared only release build, debug build don't reproduce that issue.
java.lang.NullPointerException: Attempt to read from field 'androidx.compose.ui.node.LayoutNodeLayoutDelegate androidx.compose.ui.node.LayoutNode.layoutDelegate' on a null object reference in method 'void androidx.compose.ui.node.LayoutNode.onChildRemoved(androidx.compose.ui.node.LayoutNode)'
at androidx.compose.ui.node.LayoutNode.onChildRemoved(SourceFile:1)
at androidx.compose.ui.node.LayoutNode.removeAt$ui_release(SourceFile:43)
at androidx.compose.ui.node.UiApplier.remove(SourceFile:7)
at androidx.compose.runtime.changelist.Operation$RemoveNode.execute(SourceFile:19)
at androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(SourceFile:16)
at androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(SourceFile:3)
at androidx.compose.runtime.CompositionImpl.c(SourceFile:50)
at androidx.compose.runtime.CompositionImpl.applyChanges(SourceFile:6)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(SourceFile:88)
at c0.g.composeInitial$runtime_release(SourceFile:7)
at c0.g.composeInitial$runtime_release(SourceFile:7)
at c0.g.composeInitial$runtime_release(SourceFile:7)
at androidx.compose.runtime.CompositionImpl.setContentWithReuse(SourceFile:21)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcomposeInto(SourceFile:19)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SourceFile:50)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SourceFile:37)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SourceFile:25)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SourceFile:3)
at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(SourceFile:36)
at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw(SourceFile:15)
at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw$default(SourceFile:9)
at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-x0Ok8Vo(SourceFile:26)
at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(SourceFile:539)
at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(SourceFile:9)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(SourceFile:14)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(SourceFile:9)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SourceFile:113)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(SourceFile:73)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(SourceFile:1)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(SourceFile:191)
at androidx.compose.foundation.layout.PaddingNode.measure-3p2s80s(SourceFile:33)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(SourceFile:191)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(SourceFile:2)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(SourceFile:1)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:129)
at androidx.compose.runtime.snapshots.d.a(SourceFile:55)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:142)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(SourceFile:3)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(SourceFile:17)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(SourceFile:40)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(SourceFile:1)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(SourceFile:147)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(SourceFile:20)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(SourceFile:11)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(SourceFile:10)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(SourceFile:106)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.onlyRemeasureIfScheduled(SourceFile:16)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(SourceFile:67)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtree(SourceFile:32)
at androidx.compose.ui.platform.AndroidComposeView.forceMeasureTheSubtree(SourceFile:3)
at androidx.compose.ui.node.Owner.forceMeasureTheSubtree$default(SourceFile:8)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(SourceFile:105)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(SourceFile:60)
at net.bytebuddy.asm.h.d(SourceFile:1)
at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(SourceFile:62)
at androidx.compose.foundation.pager.PagerMeasureKt.getAndMeasure-SGf7dI0(SourceFile:8)
at androidx.compose.foundation.pager.PagerMeasureKt.measurePager-bmk8ZPk(SourceFile:19)
at androidx.compose.foundation.pager.PagerMeasurePolicyKt$rememberPagerMeasurePolicy$1$1.invoke-0kLqBqw(SourceFile:452)
at androidx.compose.foundation.pager.PagerMeasurePolicyKt$rememberPagerMeasurePolicy$1$1.invoke(SourceFile:9)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(SourceFile:14)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(SourceFile:9)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SourceFile:113)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(SourceFile:73)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(SourceFile:1)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(SourceFile:191)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(SourceFile:2)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(SourceFile:1)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(SourceFile:129)
at androidx.compose.runtime.snapshots.d.a(SourceFile:55)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SourceFile:142)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(SourceFile:3)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(SourceFile:17)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(SourceFile:40)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(SourceFile:1)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(SourceFile:147)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(SourceFile:20)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(SourceFile:4)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(SourceFile:115)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(SourceFile:8)
at androidx.compose.ui.node.LayoutNode.forceRemeasure(SourceFile:31)
at androidx.compose.foundation.pager.PagerState.performScroll(SourceFile:133)
at androidx.compose.foundation.pager.PagerState.access$performScroll(SourceFile:1)
at androidx.compose.foundation.pager.PagerState$scrollableState$1.invoke(SourceFile:1)
at androidx.compose.foundation.pager.PagerState$scrollableState$1.invoke(SourceFile:2)
at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(SourceFile:19)
at androidx.compose.foundation.gestures.ScrollingLogic$performScroll$1.invoke-MK-Hz9U(SourceFile:43)
at androidx.compose.foundation.gestures.ScrollingLogic$performScroll$1.invoke(SourceFile:7)
at androidx.compose.foundation.AndroidEdgeEffectOverscrollEffect.applyToScroll-Rhakbz0(SourceFile:199)
at androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-3z1-Iug(SourceFile:19)
at androidx.compose.foundation.gestures.ScrollingLogic.access$dispatchScroll-3z1-Iug(SourceFile:1)
at androidx.compose.foundation.gestures.ScrollingLogic$dispatchDragEvents$2$1.invoke(SourceFile:5)
at androidx.compose.foundation.gestures.ScrollingLogic$dispatchDragEvents$2$1.invoke(SourceFile:1)
at androidx.compose.foundation.gestures.DragGestureNode$startListeningForEvents$1$1.invokeSuspend(SourceFile:63)
at androidx.compose.foundation.gestures.DragGestureNode$startListeningForEvents$1$1.invoke(SourceFile:2)
at androidx.compose.foundation.gestures.DragGestureNode$startListeningForEvents$1$1.invoke(SourceFile:1)
at androidx.compose.foundation.gestures.ScrollingLogic$dispatchDragEvents$2.invokeSuspend(SourceFile:42)
at androidx.compose.foundation.gestures.ScrollingLogic$dispatchDragEvents$2.invoke(SourceFile:1)
at androidx.compose.foundation.gestures.ScrollingLogic$dispatchDragEvents$2.invoke(SourceFile:2)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invokeSuspend(SourceFile:51)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(SourceFile:1)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(SourceFile:2)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invokeSuspend(SourceFile:148)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(SourceFile:2)
at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(SourceFile:1)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(SourceFile:19)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(SourceFile:10)
at androidx.compose.foundation.MutatorMutex.mutateWith(SourceFile:12)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invokeSuspend(SourceFile:53)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(SourceFile:2)
at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(SourceFile:1)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(SourceFile:19)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(SourceFile:10)
at androidx.compose.foundation.gestures.DefaultScrollableState.scroll(SourceFile:7)
at androidx.compose.foundation.pager.PagerState.scroll$suspendImpl(SourceFile:117)
at androidx.compose.foundation.pager.PagerState.scroll(Unknown Source:0)
at androidx.compose.foundation.gestures.ScrollingLogic.dispatchDragEvents(SourceFile:11)
at androidx.compose.foundation.gestures.ScrollableNode.drag(SourceFile:3)
at androidx.compose.foundation.gestures.DragGestureNode$startListeningForEvents$1.invokeSuspend(SourceFile:180)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:12)
at kotlinx.coroutines.DispatchedTask.run(SourceFile:129)
at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(SourceFile:7)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(SourceFile:1)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(SourceFile:12)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1648)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1659)
at android.view.Choreographer.doCallbacks(Choreographer.java:1129)
at android.view.Choreographer.doFrame(Choreographer.java:1045)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1622)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8913)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
mi...@thrivemarket.com <mi...@thrivemarket.com> #5
I have exact same issue However it's occurring through most of latest versions (I've been updating the compose and gradle versions hoping that I can avoid it)
Recent versions' config are:
- Compose Compiler version: 1.5.12
- Jetpack Compose UI: 1.6.6
- Kotlin version: 1.9.23
It's also on Release versions only (Getting tons of crashes from Firebase) not in debug builds.
Fatal Exception: java.lang.NullPointerException: Attempt to invoke direct method 'float androidx.compose.ui.node.LayoutNode.getZIndex()' on a null object reference at androidx.compose.ui.node.LayoutNode.ZComparator$lambda$39(LayoutNode.kt:1408) at androidx.compose.ui.node.LayoutNode.$r8$lambda$sRgkQXY3YeKQJ3LSwfhu7YPHyX0() at androidx.compose.ui.node.LayoutNode$$ExternalSyntheticLambda0.compare(D8$$SyntheticClass) at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360) at java.util.TimSort.sort(TimSort.java:220) at java.util.Arrays.sort(Arrays.java:1344) at kotlin.collections.ArraysKt___ArraysJvmKt.sortWith(_ArraysJvm.kt:2195) at androidx.compose.runtime.collection.MutableVector.sortWith(MutableVector.kt:882) at androidx.compose.ui.node.LayoutNode.getZSortedChildren(LayoutNode.kt:556) at androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers(SemanticsNode.kt:262) at androidx.compose.ui.semantics.SemanticsNode.unmergedChildren$ui_release(SemanticsNode.kt:248) at androidx.compose.ui.semantics.SemanticsNode.getChildren(SemanticsNode.kt:327) at androidx.compose.ui.semantics.SemanticsNode.getReplacedChildren$ui_release(SemanticsNode.kt:298) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3679) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3681) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap$findAllSemanticNodesRecursive(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3681) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:3714) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt.access$getAllUncoveredSemanticsNodesToMap(AndroidComposeViewAccessibilityDelegateCompat.android.kt:1) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:342) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$getCurrentSemanticsNodes(AndroidComposeViewAccessibilityDelegateCompat.android.kt:134) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeeded$1.invoke(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2822) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeeded$1.invoke(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2795) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.scheduleScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2795) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$scheduleScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt:134) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeededLambda$1.invoke(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2765) at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeededLambda$1.invoke(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2764) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.notifyInvalidatedScopes(SnapshotStateObserver.kt:1150) at androidx.compose.runtime.snapshots.SnapshotStateObserver$sendNotifications$1.invoke(SnapshotStateObserver.kt:88) at androidx.compose.runtime.snapshots.SnapshotStateObserver$sendNotifications$1.invoke(SnapshotStateObserver.kt:81) at androidx.compose.ui.platform.AndroidComposeView$snapshotObserver$1.invoke(AndroidComposeView.android.kt:316) at androidx.compose.ui.platform.AndroidComposeView$snapshotObserver$1.invoke(AndroidComposeView.android.kt:314) at androidx.compose.runtime.snapshots.SnapshotStateObserver.sendNotifications(SnapshotStateObserver.kt:81) at androidx.compose.runtime.snapshots.SnapshotStateObserver.access$sendNotifications(SnapshotStateObserver.kt:41) at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:48) at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:46) at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1815) at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1830) at androidx.compose.runtime.snapshots.SnapshotKt.access$advanceGlobalSnapshot(Snapshot.kt:1) at androidx.compose.runtime.snapshots.Snapshot$Companion.sendApplyNotifications(Snapshot.kt:583) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.disposeOrReuseStartingFromIndex(SubcomposeLayout.kt:554) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure-3p2s80s$$inlined$createMeasureResult$2.placeChildren(SubcomposeLayout.kt:990) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:365) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildrenBlock$1.invoke(LayoutNodeLayoutDelegate.kt:360) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutSnapshotReads$ui_release(OwnerSnapshotObserver.kt:83) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.layoutChildren(LayoutNodeLayoutDelegate.kt:393) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.onNodePlaced$ui_release(LayoutNodeLayoutDelegate.kt:551) at androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno(InnerNodeCoordinator.kt:160) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33) at androidx.compose.ui.layout.Placeable$PlacementScope.place(Placeable.kt:425) at androidx.compose.ui.layout.Placeable$PlacementScope.place$default(Placeable.kt:217) at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$2$1.invoke(AndroidOverscroll.android.kt:589) at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$2$1.invoke(AndroidOverscroll.android.kt:588) at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:107) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:451) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:298) at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$1$1.invoke(AndroidOverscroll.android.kt:577) at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$1$1.invoke(AndroidOverscroll.android.kt:570) at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:107) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer(Placeable.kt:451) at androidx.compose.ui.layout.Placeable$PlacementScope.placeWithLayer$default(Placeable.kt:298) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:648) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier$measure$1.invoke(GraphicsLayerModifier.kt:647) at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:107) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative(Placeable.kt:417) at androidx.compose.ui.layout.Placeable$PlacementScope.placeRelative$default(Placeable.kt:203) at androidx.compose.foundation.layout.FillNode$measure$1.invoke(Size.kt:704) at androidx.compose.foundation.layout.FillNode$measure$1.invoke(Size.kt:703) at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:107) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.placeAt-f8xVGno(LayoutModifierNodeCoordinator.kt:167) at androidx.compose.ui.layout.Placeable.access$placeAt-f8xVGno(Placeable.kt:33) at androidx.compose.ui.layout.Placeable$PlacementScope.place-70tqf50(Placeable.kt:428) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:489) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(LayoutNodeLayoutDelegate.kt:483) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.node.OwnerSnapshotObserver.observeLayoutModifierSnapshotReads$ui_release(OwnerSnapshotObserver.kt:98) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.placeOuterCoordinator-f8xVGno(LayoutNodeLayoutDelegate.kt:753) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.replace(LayoutNodeLayoutDelegate.kt:772) at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:914) at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(MeasureAndLayoutDelegate.kt:446) at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(AndroidComposeView.android.kt:982) at androidx.compose.ui.node.LayoutNode.forceRemeasure(LayoutNode.kt:1219) at androidx.compose.foundation.lazy.LazyListState.onScroll$foundation_release(LazyListState.kt:352) at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:187) at androidx.compose.foundation.lazy.LazyListState$scrollableState$1.invoke(LazyListState.kt:187) at androidx.compose.foundation.gestures.DefaultScrollableState$scrollScope$1.scrollBy(ScrollableState.kt:166) at androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke-MK-Hz9U(Scrollable.kt:762) at androidx.compose.foundation.gestures.ScrollingLogic$dispatchScroll$performScroll$1.invoke(Scrollable.kt:752) at androidx.compose.foundation.AndroidEdgeEffectOverscrollEffect.applyToScroll-Rhakbz0(AndroidOverscroll.android.kt:184) at androidx.compose.foundation.gestures.ScrollingLogic.dispatchScroll-3eAAhYA(Scrollable.kt:778) at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke-MK-Hz9U(Scrollable.kt:833) at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1.invoke(Scrollable.kt:832) at androidx.compose.foundation.gestures.ScrollingLogic$doFlingAnimation$2$scope$1.scrollBy(Scrollable.kt:837) at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke(Scrollable.kt:967) at androidx.compose.foundation.gestures.DefaultFlingBehavior$performFling$2$1.invoke(Scrollable.kt:965) at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame(SuspendAnimation.kt:361) at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale(SuspendAnimation.kt:339) at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale(SuspendAnimation.kt:1) at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke(SuspendAnimation.kt:279) at androidx.compose.animation.core.SuspendAnimationKt$animate$9.invoke(SuspendAnimation.kt:278) at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:304) at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:303) at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42) at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:558) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:551) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1397) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1408) at android.view.Choreographer.doCallbacks(Choreographer.java:1008) at android.view.Choreographer.doFrame(Choreographer.java:934) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1382) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8501) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
wo...@gmail.com <wo...@gmail.com> #6
Compose Material3 : 1.3.0-alpha06
Compose compiler: 1.5.13
I have the same error, it only happens in the release version.
java.lang.NullPointerException: Attempt to read from field 'androidx.compose.ui.node.LayoutNodeLayoutDelegate androidx.compose.ui.node.LayoutNode.layoutDelegate' on a null object reference in method 'void androidx.compose.ui.node.LayoutNode.onChildRemoved(androidx.compose.ui.node.LayoutNode)'
ma...@gmail.com <ma...@gmail.com> #7
I can reproduce the bug in code on release with obfuscation enabled. The newest libraries for today (BOM 2024.05.00-alpha01). Do you need sample repository to reproduce this bug?
nj...@google.com <nj...@google.com>
wo...@gmail.com <wo...@gmail.com> #8
Compose : 1.7.0-beta01
Compose Material3 : 1.3.0-beta01
Compose Compiler : 1.5.14
Description
Jetpack Compose component used: UI
Android Studio Build: jellyfish
Kotlin version: 1.9.23
Steps to Reproduce or Code Sample to Reproduce:
idk how, but crashlytics have this issue in repetitive form
Stack trace (if applicable):
java.lang.NullPointerException: Attempt to read from field 'M0.P M0.H.V' on a null object reference in method 'void M0.H.J(M0.H)'
androidx.compose.ui.node.LayoutNode.J(LayoutNode.kt:1)
androidx.compose.ui.node.LayoutNode.removeAt$ui_release(LayoutNode.kt:20)
androidx.compose.ui.node.UiApplier.remove(UiApplier.android.kt:5)
androidx.compose.runtime.changelist.Operation$RemoveNode.execute(Operation.kt:11)
androidx.compose.runtime.changelist.Operations.executeAndFlushAllPendingOperations(Operations.kt:26)
androidx.compose.runtime.changelist.ChangeList.executeAndFlushAllPendingChanges(ChangeList.kt:3)
androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:51)
androidx.compose.runtime.CompositionImpl.i(Composition.kt:6)
androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:188)
androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:188)
androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.java:48)
androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.java:48)
androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:48)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1299)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
android.view.Choreographer.doCallbacks(Choreographer.java:923)
android.view.Choreographer.doFrame(Choreographer.java:847)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
android.os.Handler.handleCallback(Handler.java:942)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loopOnce(Looper.java:226)
android.os.Looper.loop(Looper.java:313)
android.app.ActivityThread.main(ActivityThread.java:8762)
java.lang.reflect.Method.invoke(Method.java:0)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)