Closed Bug 1984977 Opened 11 months ago Closed 11 months ago

[composable toolbar] Crash when tapping on a trending / recent searches result

Categories

(Firefox for Android :: Crash Reporting, defect, P1)

Firefox 144
All
Android
defect

Tracking

()

VERIFIED FIXED
144 Branch
Tracking Status
firefox142 --- unaffected
firefox143 --- unaffected
firefox144 + verified

People

(Reporter: mlobontiuroman, Assigned: petru)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Crash Data

Attachments

(1 file)

Attached video crash - Trim.mp4

Precondition

Have VPN set to US.

Steps to reproduce

  1. Enable Trending searches, Recent searches, and Composable toolbar from Secret settings.
  2. Open a website.
  3. After it is fully loaded, tap on the toolbar.
  4. The recent searches and trending searches are displayed.
  5. Tap on one of the displayed results.

Expected behavior

The selected search is opened in the same tab.

Actual behavior

Firefox for Android Nightly crashes.

Device information

  • Firefox version: Nightly 144.0a1 from 8/24
  • Android device: Samsung Galaxy S24 (Android 15)
  • NOT reproducible when composable toolbar is disabled.
  • Not reproducible on an OnePlus5 (Android 10).

Any additional information?

05779588-00c4-4415-b72b-7416b694698f
java.lang.IllegalArgumentException: performMeasureAndLayout called during measure layout


at androidx.compose.ui.internal.InlineClassHelperKt.throwIllegalArgumentException(InlineClassHelper.kt:3)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout-0kLqBqw(MeasureAndLayoutDelegate.kt:51)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout-0kLqBqw(AndroidComposeView.android.kt:8)
at androidx.compose.ui.node.LayoutNode.forceRemeasure(LayoutNode.kt:39)
at androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsModifierNode.layout-o7g1Pn8(LazyLayoutBeyondBoundsModifierLocal.kt:178)
at androidx.compose.ui.focus.BeyondBoundsLayoutKt.searchBeyondBounds--OM-vw8(BeyondBoundsLayout.kt:191)
at androidx.compose.ui.focus.TwoDimensionalFocusSearchKt.generateAndSearchChildren-4C6V_qg(TwoDimensionalFocusSearch.kt:30)
at androidx.compose.ui.focus.TwoDimensionalFocusSearchKt.searchChildren-4C6V_qg(TwoDimensionalFocusSearch.kt:184)
at androidx.compose.ui.focus.TwoDimensionalFocusSearchKt.generateAndSearchChildren-4C6V_qg(TwoDimensionalFocusSearch.kt:1)
at androidx.compose.ui.focus.TwoDimensionalFocusSearchKt.twoDimensionalFocusSearch-sMXa3k8(TwoDimensionalFocusSearch.kt:145)
at androidx.compose.ui.focus.FocusOwnerImpl.focusSearch-ULY8qGw(FocusOwnerImpl.kt:290)
at androidx.compose.ui.platform.AndroidComposeView.getFocusedRect(AndroidComposeView.android.kt:48)
at android.view.FocusFinder.findNextFocusInAbsoluteDirection(FocusFinder.java:374)
at android.view.FocusFinder.findNextFocus(FocusFinder.java:268)
at android.view.FocusFinder.findNextFocus(FocusFinder.java:110)
at android.view.FocusFinder.findNextFocus(FocusFinder.java:80)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1087)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at androidx.compose.ui.platform.AndroidComposeView.focusSearch(AndroidComposeView.android.kt:118)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.ViewGroup.focusSearch(ViewGroup.java:1089)
at android.view.View.focusSearch(View.java:14957)
at android.widget.TextView.hasEditorInFocusSearchDirection(TextView.java:10639)
at android.widget.TextView.onCreateInputConnection(TextView.java:10662)
at androidx.appcompat.widget.AppCompatEditText.onCreateInputConnection(AppCompatEditText.java:1)
at mozilla.components.ui.autocomplete.InlineAutocompleteEditText.onCreateInputConnection(InlineAutocompleteEditText.kt:6)
at android.view.inputmethod.InputMethodManager.createInputConnection(InputMethodManager.java:5318)
at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:3377)
at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:3213)
at mozilla.components.ui.autocomplete.InlineAutocompleteEditText.restartInput(InlineAutocompleteEditText.kt:7)
at mozilla.components.ui.autocomplete.InlineAutocompleteEditText.onFocusChanged(InlineAutocompleteEditText.kt:38)
at android.view.View.clearFocusInternal(View.java:8986)
at android.view.View.layout(View.java:26778)
at androidx.compose.ui.viewinterop.AndroidViewHolder.onLayout(AndroidViewHolder.android.kt:6)
at android.view.View.layout(View.java:26738)
at android.view.ViewGroup.layout(ViewGroup.java:6815)
at androidx.compose.ui.viewinterop.AndroidViewHolder_androidKt.access$layoutAccordingTo(AndroidViewHolder.android.kt:49)
at androidx.compose.ui.viewinterop.AndroidViewHolder$layoutNode$1$5$measure$2.invoke(AndroidViewHolder.android.kt:7)
at androidx.compose.ui.node.LookaheadCapablePlaceable$layout$1.placeChildren(LookaheadDelegate.kt:7)
at androidx.compose.ui.node.MeasurePassDelegate$layoutChildrenBlock$1.invoke(MeasurePassDelegate.kt:93)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:51)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:57)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:130)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:3)
at androidx.compose.ui.node.MeasurePassDelegate.layoutChildren(MeasurePassDelegate.kt:107)
at androidx.compose.ui.node.MeasurePassDelegate.onNodePlaced$ui_release(MeasurePassDelegate.kt:128)
at androidx.compose.ui.node.InnerNodeCoordinator.placeAt-f8xVGno(InnerNodeCoordinator.kt:12)
at androidx.compose.ui.node.MeasurePassDelegate$placeOuterCoordinatorBlock$1.invoke(MeasurePassDelegate.kt:80)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:109)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:57)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:130)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:3)
at androidx.compose.ui.node.MeasurePassDelegate.placeOuterCoordinator-MLgxB_4(MeasurePassDelegate.kt:87)
at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:43)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:199)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:143)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:34)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:15)
at android.view.View.draw(View.java:26151)
at android.view.View.updateDisplayListIfDirty(View.java:24988)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4768)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4740)
at android.view.View.updateDisplayListIfDirty(View.java:24932)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:737)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:743)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:841)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:6755)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:6372)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:5282)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3708)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:12542)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1751)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1760)
at android.view.Choreographer.doCallbacks(Choreographer.java:1216)
at android.view.Choreographer.doFrame(Choreographer.java:1142)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1707)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:342)
at android.app.ActivityThread.main(ActivityThread.java:9634)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)```
See Also: → 1984981
Duplicate of this bug: 1985036
Crash Signature: [@ java.lang.IllegalArgumentException: at androidx.compose.ui.internal.InlineClassHelperKt.throwIllegalArgumentException(InlineClassHelper.kt:3)]
Keywords: regression
Regressed by: 1982356
Duplicate of this bug: 1985044

This is to be fixed by the patch from bug 1984981.

(In reply to Petru-Mugurel Lingurar [:petru] from comment #3)

This is to be fixed by the patch from bug 1984981.

Mira, once the patch from Bug 1984981 is available in a build, could you confirm?

Depends on: 1984981
Flags: needinfo?(mlobontiuroman)
See Also: 1984981

The bug is marked as tracked for firefox144 (nightly). However, the bug still isn't assigned.

:royang, could you please find an assignee for this tracked bug? Given that it is a regression and we know the cause, we could also simply backout the regressor. If you disagree with the tracking decision, please talk with the release managers.

For more information, please visit BugBot documentation.

Flags: needinfo?(royang)
Assignee: nobody → petru
Status: NEW → ASSIGNED
Flags: needinfo?(royang)
Priority: -- → P1

Verified as fixed on the Firefox for Android 144.0a1 from 8/26 using a Samsung Galaxy S24 (Android 15) device.

Flags: needinfo?(mlobontiuroman)
Status: ASSIGNED → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → 144 Branch
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: