google / accompanist

A collection of extension libraries for Jetpack Compose
https://google.github.io/accompanist
Apache License 2.0
7.38k stars 596 forks source link

`LayoutNodeKt.requireOwner` crashes #1674

Closed kuyucuburak closed 1 year ago

kuyucuburak commented 1 year ago

Describe the bug

I am working on an app that has millions of downloads. I was using the 0.30.1 version for navigation-material. I had hundreds of SwipeableV2State.requireOffset crashes. I found out that it is because of this library and it is happening when a bottom sheet is being viewed and rotation of the devices is changed.

I updated my version to 0.31.4-beta from 0.30.1. The problem has been solved. I couldn't see anything related to it from changelog. The bug has been fixed unknowingly?

Anyways after I updated my version, I have so much more crashes and my crash-free rate is dropped a lot. I think this library is the reason. Because I saw this crash just after I updated this library. Let me share the stacktrace:

Stacktrace ``` androidx.compose.ui.node.LayoutNodeKt.requireOwner (LayoutNode.kt:1434) androidx.compose.ui.node.LayoutNode.getCollapsedSemantics$ui_release (LayoutNode.kt:413) androidx.compose.ui.semantics.SemanticsNodeKt.SemanticsNode (SemanticsNode.kt:48) androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers (SemanticsNode.kt:252) androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers (SemanticsNode.kt:254) androidx.compose.ui.semantics.SemanticsNode.fillOneLayerOfSemanticsWrappers (SemanticsNode.kt:254) androidx.compose.ui.semantics.SemanticsNode.unmergedChildren$ui_release (SemanticsNode.kt:236) androidx.compose.ui.semantics.SemanticsNode.getChildren (SemanticsNode.kt:310) androidx.compose.ui.semantics.SemanticsNode.getReplacedChildren$ui_release (SemanticsNode.kt:281) androidx.compose.ui.semantics.SemanticsNode.isUnmergedLeafNode$ui_release (SemanticsNode.kt:99) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.isScreenReaderFocusable (AndroidComposeViewAccessibilityDelegateCompat.android.kt:755) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping$depthFirstSearch (AndroidComposeViewAccessibilityDelegateCompat.android.kt:699) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.subtreeSortedByGeometryGrouping (AndroidComposeViewAccessibilityDelegateCompat.android.kt:718) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.setTraversalValues (AndroidComposeViewAccessibilityDelegateCompat.android.kt:733) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.getCurrentSemanticsNodes$ui_release (AndroidComposeViewAccessibilityDelegateCompat.android.kt:385) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.android.kt:520) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$sendScrollEventIfNeeded (AndroidComposeViewAccessibilityDelegateCompat.android.kt:192) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.android.kt:192) androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo (AndroidComposeViewAccessibilityDelegateCompat.android.kt:3176) android.view.View.createAccessibilityNodeInfoInternal (View.java:6509) android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo (View.java:23507) android.view.View.createAccessibilityNodeInfo (View.java:6495) android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:145) android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:119) android.view.View.onInitializeAccessibilityEventInternal (View.java:6449) android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent (View.java:23419) androidx.core.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent (AccessibilityDelegateCompat.java:264) androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.onInitializeAccessibilityEvent (AccessibilityDelegateCompat.java:80) android.view.View.onInitializeAccessibilityEvent (View.java:6435) android.view.View.sendAccessibilityEventUncheckedInternal (View.java:6299) android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked (View.java:23358) androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked (AccessibilityDelegateCompat.java:200) androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked (AccessibilityDelegateCompat.java:117) android.view.View.sendAccessibilityEventUnchecked (View.java:6282) android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run (ViewRootImpl.java:7551) android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost (ViewRootImpl.java:7577) android.view.ViewRootImpl.postSendWindowContentChangedCallback (ViewRootImpl.java:6689) android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged (ViewRootImpl.java:6873) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.ViewGroup.notifySubtreeAccessibilityStateChanged (ViewGroup.java:3138) android.view.View.notifySubtreeAccessibilityStateChangedIfNeeded (View.java:9443) android.view.ViewGroup.addViewInner (ViewGroup.java:4517) android.view.ViewGroup.addView (ViewGroup.java:4297) android.view.ViewGroup.addView (ViewGroup.java:4237) android.view.ViewGroup.addView (ViewGroup.java:4210) androidx.compose.ui.platform.AndroidComposeView.getAndroidViewsHandler$ui_release (AndroidComposeView.android.kt:294) androidx.compose.ui.platform.AndroidComposeView.addAndroidView (AndroidComposeView.android.kt:742) androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$3.invoke (AndroidViewHolder.android.kt:331) androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$3.invoke (AndroidViewHolder.android.kt:330) androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:478) androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:471) androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:471) androidx.compose.ui.node.LayoutNode.attach$ui_release (LayoutNode.kt:471) androidx.compose.ui.node.LayoutNode.insertAt$ui_release (LayoutNode.kt:302) androidx.compose.ui.node.UiApplier.insertBottomUp (UiApplier.android.kt:31) androidx.compose.ui.node.UiApplier.insertBottomUp (UiApplier.android.kt:21) androidx.compose.runtime.ComposerImpl$createNode$3.invoke (Composer.kt:1621) androidx.compose.runtime.ComposerImpl$createNode$3.invoke (Composer.kt:1616) androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke (Composer.kt:3546) androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke (Composer.kt:3543) androidx.compose.runtime.CompositionImpl.applyChangesInLocked (Composition.kt:818) androidx.compose.runtime.CompositionImpl.applyChanges (Composition.kt:849) androidx.compose.runtime.Recomposer.composeInitial$runtime_release (Recomposer.kt:1037) androidx.compose.runtime.CompositionImpl.setContent (Composition.kt:520) androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke (Wrapper.android.kt:142) androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke (Wrapper.android.kt:133) androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable (AndroidComposeView.android.kt:1191) androidx.compose.ui.platform.WrappedComposition.setContent (Wrapper.android.kt:133) androidx.compose.ui.platform.WrappedComposition.onStateChanged (Wrapper.android.kt:183) androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.kt:314) androidx.lifecycle.LifecycleRegistry.addObserver (LifecycleRegistry.kt:192) androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke (Wrapper.android.kt:140) androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke (Wrapper.android.kt:133) androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow (AndroidComposeView.android.kt:1266) android.view.View.dispatchAttachedToWindow (View.java:15420) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2955) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2962) android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1560) android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1290) android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6399) android.view.Choreographer$CallbackRecord.run (Choreographer.java:873) android.view.Choreographer.doCallbacks (Choreographer.java:685) android.view.Choreographer.doFrame (Choreographer.java:621) android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:859) android.os.Handler.handleCallback (Handler.java:754) android.os.Handler.dispatchMessage (Handler.java:95) android.os.Looper.loop (Looper.java:165) android.app.ActivityThread.main (ActivityThread.java:6375) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:912) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:802) ```

To Reproduce

Unfortunately I don't have exact steps for it.

Expected behavior

N/A

Screenshots?

N/A

Environment:

This is happening mostly on Android 8 devices.

Screenshot 2023-07-07 at 17 32 23

kuyucuburak commented 1 year ago

Please let me know if you need any info I can help.

bentrengrove commented 1 year ago

By upgrading your Accompanist version, you have also updated your Compose version to 1.5.0-beta. This looks like a Compose crash to me and not an accompanist one so will close this one out. Thank you for the report.

kuyucuburak commented 1 year ago

Ah got it. Thank you for the answer!