tachiyomi icon indicating copy to clipboard operation
tachiyomi copied to clipboard

LazyColumn lag/crash with longer lists of contents

Open arkon opened this issue 1 year ago • 4 comments

Steps to reproduce

This is probably more reproducible on lower end devices.

Based on log reports, this has occurred in, from highest to lowest frequency:

  • Extensions list
  • Sources list
  • Updates list
  • Chapters list

Expected behavior

Render without crashing.

Actual behavior

Compose crashes due to duplicate item keys.

Crash logs

Example from #8509:

11-10 00:34:33.615 20056 20056 E AndroidRuntime: java.lang.IllegalArgumentException: Key extensionHeader-2131886391 was already used. If you are using LazyColumn/Row please make sure you provide a unique key for each item.
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:25)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:8)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:40)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.foundation.lazy.LazyMeasuredItemProvider.getAndMeasure-ZjPyQlc(LazyMeasuredItemProvider.kt:11)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-nXYdgZc(LazyListMeasure.kt:16)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:445)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$1$2$1.invoke(LazyLayout.kt:27)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:68)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:57)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:11)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:20)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:10)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:9)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:66)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:9)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:48)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:92)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:19)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:18)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:34)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:125)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:191)
11-10 00:34:33.615 20056 20056 E AndroidRuntime: 	at eu.kanade.presentation.components.VerticalFastScrollerKt$VerticalFastScroller$2$1.invoke(VerticalFastScroller.kt:53)

...

Tachiyomi version

0.14.3

Android version

N/A

Device

N/A

Other details

No response

Acknowledgements

  • [X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
  • [X] I have written a short but informative title.
  • [X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
  • [X] I have tried the troubleshooting guide.
  • [X] I have updated the app to version 0.14.3.
  • [X] I have updated all installed extensions.
  • [X] I will fill out all of the requested information in this form.

arkon avatar Jan 31 '23 22:01 arkon