braze-android-sdk icon indicating copy to clipboard operation
braze-android-sdk copied to clipboard

[Bug]: Crash with IndexOutOfBoundsException in compose ContentCardsList

Open kevinguitar opened this issue 9 months ago • 3 comments

Braze Android SDK Version

30.4.0

Steps To Reproduce

Not able to reproduce, saw the crashes from Crashlytics

Expected Behavior

No crash

Actual Incorrect Behavior

Crash with IndexOutOfBoundsException, stack trace attached

Fatal Exception: java.lang.IndexOutOfBoundsException: index: 1, size: 0
       at androidx.compose.runtime.external.kotlinx.collections.immutable.internal.ListImplementation.checkElementIndex$runtime_release(ListImplementation.java:15)
       at androidx.compose.runtime.external.kotlinx.collections.immutable.implementations.immutableList.SmallPersistentVector.get(SmallPersistentVector.kt:146)
       at androidx.compose.runtime.snapshots.SnapshotStateList.get(SnapshotStateList.kt:91)
       at androidx.compose.foundation.lazy.LazyDslKt$items$3.invoke(LazyDsl.kt:147)
       at com.braze.jetpackcompose.contentcards.ContentCardsListKt$ContentCardsList$7$1$1$invoke$$inlined$items$default$3.invoke(LazyDsl.kt:147)
       at androidx.compose.foundation.lazy.LazyDslKt$items$3.invoke(LazyDsl.kt:144)
       at com.braze.jetpackcompose.contentcards.ContentCardsListKt$ContentCardsList$7$1$1$invoke$$inlined$items$default$3.invoke(LazyDsl.kt:144)
       at androidx.compose.foundation.lazy.layout.LazyLayoutIntervalContent.getContentType(LazyLayoutIntervalContent.java:49)
       at androidx.compose.foundation.lazy.LazyListItemProviderImpl.getContentType(LazyListItemProvider.kt:87)
       at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:123)
       at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure(LazyListMeasuredItemProvider.java:48)
       at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-5IMabDg(LazyListMeasure.kt:195)
       at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:313)
       at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:178)
       at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(LazyLayout.kt:107)
       at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(LazyLayout.kt:100)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:709)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$2.invoke-3p2s80s(AndroidOverscroll_android.kt:584)
       at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$2.invoke(AndroidOverscroll_android.kt:583)
       at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:294)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$1.invoke-3p2s80s(AndroidOverscroll.android.kt:568)
       at androidx.compose.foundation.AndroidOverscroll_androidKt$StretchOverscrollNonClippingLayer$1.invoke(AndroidOverscroll.android.kt:567)
       at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:294)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:252)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:251)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.java: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.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:1617)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:36)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:620)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.java:1145)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.java:1136)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:356)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:514)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded$default(MeasureAndLayoutDelegate.kt:491)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:377)
       at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:971)
       at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.java:228)
       at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1224)
       at android.view.View.draw(View.java:23901)
       at android.view.View.updateDisplayListIfDirty(View.java:22767)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
       at android.view.View.updateDisplayListIfDirty(View.java:22714)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:602)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:608)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:684)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:5440)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5148)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4212)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2919)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10491)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1108)
       at android.view.Choreographer.doCallbacks(Choreographer.java:866)
       at android.view.Choreographer.doFrame(Choreographer.java:797)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1092)
       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:8663)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Verbose Logs

No response

Additional Information

No response

kevinguitar avatar May 03 '24 06:05 kevinguitar

Can you let us know what parameters, if any, you're passing to ContentCardList()?

bryanlogan avatar May 06 '24 20:05 bryanlogan

@bryanlogan sure

ContentCardsList(
    emptyComposable = {
        // Our empty case composable
    },
    style = ContentCardListStyling(
        listBackgroundColor = colorResource(id = Colors.primary_color),
        spacerSize = 0.dp,
        listPadding = 0.dp
    ),
    cardStyle = ContentCardStyling(
        maxCardWidth = 600.dp,
        cardBackgroundColor = colorResource(id = Colors.primary_color)
    ),
    cardUpdateHandler = state.cardUpdateHandler, // Just to filter the desired cards by placement
    onCardClicked = state.onCardClick,
    customCardComposer = { card ->
        // map the card to our composable
    }
)

kevinguitar avatar May 07 '24 02:05 kevinguitar

I'm having trouble recreating this. The issue seems to be occurring within the Jetpack library when rendering the individual items. Can you reach out to Braze support so we can get things like the APK, some more details on those parameters you're passing in so we can try to better recreate this?

bryanlogan avatar May 09 '24 14:05 bryanlogan

Closing because unable to recreate. Feel free to reach out to support if this continues.

bryanlogan avatar Jul 26 '24 18:07 bryanlogan

@bryanlogan
Issue still happens on 32.0.0

also from crashlytics

Fatal Exception: java.lang.IndexOutOfBoundsException: index: 2, size: 0
       at androidx.compose.runtime.external.kotlinx.collections.immutable.internal.ListImplementation.checkElementIndex$runtime_release(ListImplementation.java:15)
       at androidx.compose.runtime.external.kotlinx.collections.immutable.implementations.immutableList.SmallPersistentVector.get(SmallPersistentVector.kt:146)
       at androidx.compose.runtime.snapshots.SnapshotStateList.get(SnapshotStateList.kt:91)
       at androidx.compose.foundation.lazy.LazyDslKt$items$3.invoke(LazyDsl.kt:147)
       at com.braze.jetpackcompose.contentcards.ContentCardsListKt$ContentCardsList$7$1$1$invoke$$inlined$items$default$3.invoke(LazyDsl.kt:147)
       at androidx.compose.foundation.lazy.LazyDslKt$items$3.invoke(LazyDsl.kt:144)
       at com.braze.jetpackcompose.contentcards.ContentCardsListKt$ContentCardsList$7$1$1$invoke$$inlined$items$default$3.invoke(LazyDsl.kt:144)
       at androidx.compose.foundation.lazy.layout.LazyLayoutIntervalContent.getContentType(LazyLayoutIntervalContent.java:49)
       at androidx.compose.foundation.lazy.LazyListItemProviderImpl.getContentType(LazyListItemProvider.kt:87)
       at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:123)
       at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure(LazyListMeasuredItemProvider.java:48)
       at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-5IMabDg(LazyListMeasure.kt:195)
       at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:313)
       at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:178)
       at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw(LazyLayout.kt:107)
       at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke(LazyLayout.kt:100)
       at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:709)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:252)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:251)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.java: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.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:1617)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:36)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:620)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:596)
       at androidx.compose.foundation.layout.BoxMeasurePolicy.measure-3p2s80s(Box.kt:164)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:699)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:252)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:251)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.java: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.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:1617)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:36)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:620)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:596)
       at androidx.compose.foundation.layout.RowColumnMeasurementHelper.measureWithoutPlacing-_EkL_-Y(RowColumnMeasurementHelper.kt:112)
       at androidx.compose.foundation.layout.RowColumnMeasurePolicy.measure-3p2s80s(RowColumnImpl.kt:72)
       at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
       at androidx.compose.foundation.layout.PaddingValuesModifier.measure-3p2s80s(Padding.kt:455)
       at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:252)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.java:251)
       at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.java: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.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:1617)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.java:36)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:620)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.java:1145)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.java:1136)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:356)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:514)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.onlyRemeasureIfScheduled(MeasureAndLayoutDelegate.kt:598)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:624)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:631)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:631)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtree(MeasureAndLayoutDelegate.kt:587)
       at androidx.compose.ui.platform.AndroidComposeView.forceMeasureTheSubtree(AndroidComposeView.android.kt:993)
       at androidx.compose.ui.node.Owner.forceMeasureTheSubtree$default(Owner.java:239)
       at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:632)
       at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.java:1145)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:354)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureOnly(MeasureAndLayoutDelegate.kt:562)
       at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureOnly(MeasureAndLayoutDelegate.kt:407)
       at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:1058)
       at android.view.View.measure(View.java:23188)
       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:23188)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
       at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
       at android.view.View.measure(View.java:23188)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
       at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
       at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
       at android.view.View.measure(View.java:23188)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
       at android.view.View.measure(View.java:23188)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
       at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
       at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
       at android.view.View.measure(View.java:23188)
       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
       at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
       at com.android.internal.policy.DecorView.onMeasure(DecorView.java:731)
       at android.view.View.measure(View.java:23188)
       at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2736)
       at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1589)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1477)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7219)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1004)
       at android.view.Choreographer.doCallbacks(Choreographer.java:816)
       at android.view.Choreographer.doFrame(Choreographer.java:751)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:990)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:280)
       at android.app.ActivityThread.main(ActivityThread.java:6706)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

mozarty avatar Aug 22 '24 09:08 mozarty

Can you reach out to Braze support so we can get things like the APK, some more details on those parameters you're passing in so we can try to better recreate this?

bryanlogan avatar Aug 22 '24 16:08 bryanlogan

This is a bug in the compose framework, issuetracker#357653519

vickyleu avatar Oct 28 '24 03:10 vickyleu