Closed Bug 1935429 Opened 1 year ago Closed 1 year ago

Crash in [@ java.lang.IllegalStateException: at org.mozilla.fenix.browser.BaseBrowserFragment.resetNavbar(BaseBrowserFragment.kt:1870)]

Categories

(Firefox for Android :: Experimentation and Telemetry, defect)

All
Android
defect

Tracking

()

VERIFIED FIXED
135 Branch
Tracking Status
firefox133 --- unaffected
firefox134 --- unaffected
firefox135 + verified

People

(Reporter: aaronmt, Assigned: petru)

References

(Regression)

Details

(4 keywords, Whiteboard: robo-test)

Attachments

(4 files)

Failing task: https://firefox-ci-tc.services.mozilla.com/tasks/U5z2lMq9RJmfyIrCbwTLEg
Matrix-19rtx67f3lkga https://console.firebase.google.com/project/moz-fenix/testlab/histories/bh.66b7091e15d53d45/matrices/7058953261847832196/details

Build: 12/05 Debug

2024-12-05 07:16:09 data_app_crash (text, 4421 bytes)
Process: org.mozilla.fenix.debug
PID: 15904
UID: 10233
Flags: 0x38e83e46
Package: org.mozilla.fenix.debug v1 (1.0.2449)
Foreground: Yes
Process-Runtime: 571791
Build: google/oriole/oriole:12/SQ1D.220205.004/8151327:user/release-keys
Loading-Progress: 1.0

java.lang.IllegalStateException: Composition is disposed while composing. If dispose is triggered by a call in @Composable function, consider wrapping it with SideEffect block.
	at androidx.compose.runtime.PreconditionsKt.throwIllegalStateException(Preconditions.kt:43)
	at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:1553)
	at androidx.compose.ui.platform.WrappedComposition.dispose(Wrapper.android.kt:169)
	at androidx.compose.ui.platform.AbstractComposeView.disposeComposition(ComposeView.android.kt:273)
	at androidx.compose.ui.platform.ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1.onViewDetachedFromWindow(ViewCompositionStrategy.android.kt:91)
	at android.view.View.dispatchDetachedFromWindow(View.java:20824)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3956)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3948)
	at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5572)
	at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5543)
	at android.view.ViewGroup.removeView(ViewGroup.java:5474)
	at org.mozilla.fenix.browser.BaseBrowserFragment.resetNavbar(BaseBrowserFragment.kt:1870)
	at org.mozilla.fenix.browser.BaseBrowserFragment.restoreBottomToolbarDivider(BaseBrowserFragment.kt:1858)
	at org.mozilla.fenix.browser.BaseBrowserFragment.access$restoreBottomToolbarDivider(BaseBrowserFragment.kt:253)
	at org.mozilla.fenix.browser.BaseBrowserFragment$initializeNavBar$1$1.invoke(BaseBrowserFragment.kt:1533)
	at org.mozilla.fenix.browser.BaseBrowserFragment$initializeNavBar$1$1.invoke(BaseBrowserFragment.kt:1494)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
	at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:192)
	at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2825)
	at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3116)
	at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3607)
	at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3552)
	at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:948)
	at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1206)
	at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:132)
	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:616)
	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
	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:1035)
	at android.view.Choreographer.doCallbacks(Choreographer.java:845)
	at android.view.Choreographer.doFrame(Choreographer.java:775)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7839)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@18a8041, androidx.compose.ui.platform.MotionDurationScaleImpl@e5299e6, StandaloneCoroutine{Cancelling}@1f3cb27, AndroidUiDispatcher@3dd91d4]
java.lang.IllegalStateException: Composition is disposed while composing. If dispose is triggered by a call in @Composable function, consider wrapping it with SideEffect block.
     FATAL EXCEPTION: main
Process: org.mozilla.fenix.debug, PID: 15904
java.lang.IllegalStateException: Composition is disposed while composing. If dispose is triggered by a call in @Composable function, consider wrapping it with SideEffect block.
	at androidx.compose.runtime.PreconditionsKt.throwIllegalStateException(Preconditions.kt:43)
	at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:1553)
	at androidx.compose.ui.platform.WrappedComposition.dispose(Wrapper.android.kt:169)
	at androidx.compose.ui.platform.AbstractComposeView.disposeComposition(ComposeView.android.kt:273)
	at androidx.compose.ui.platform.ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1.onViewDetachedFromWindow(ViewCompositionStrategy.android.kt:91)
	at android.view.View.dispatchDetachedFromWindow(View.java:20824)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3956)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3948)
	at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5572)
	at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5543)
	at android.view.ViewGroup.removeView(ViewGroup.java:5474)
	at org.mozilla.fenix.browser.BaseBrowserFragment.resetNavbar(BaseBrowserFragment.kt:1870)
	at org.mozilla.fenix.browser.BaseBrowserFragment.restoreBottomToolbarDivider(BaseBrowserFragment.kt:1858)
	at org.mozilla.fenix.browser.BaseBrowserFragment.access$restoreBottomToolbarDivider(BaseBrowserFragment.kt:253)
	at org.mozilla.fenix.browser.BaseBrowserFragment$initializeNavBar$1$1.invoke(BaseBrowserFragment.kt:1533)
	at org.mozilla.fenix.browser.BaseBrowserFragment$initializeNavBar$1$1.invoke(BaseBrowserFragment.kt:1494)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
	at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:192)
	at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2825)
	at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3116)
	at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3607)
	at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3552)
	at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:948)
	at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1206)
	at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:132)
	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:616)
	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
	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:1035)
	at android.view.Choreographer.doCallbacks(Choreographer.java:845)
	at android.view.Choreographer.doFrame(Choreographer.java:775)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7839)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@18a8041, androidx.compose.ui.platform.MotionDurationScaleImpl@e5299e6, StandaloneCoroutine{Cancelling}@1f3cb27, AndroidUiDispatcher@3dd91d4]
Whiteboard: robo-test

:petru, since you are the author of the regressor, bug 1909746, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(petru)

Reproducible by hitting the 'x' on the survey drawer.

I saved a PDF, and got the survey. Slid the drawer up and hit 'x' (like in the screenshot).

Keywords: reproducible
Duplicate of this bug: 1935433
Assignee: nobody → petru
Status: NEW → ASSIGNED
Flags: needinfo?(petru)

Crashes on survey Submit too

[Tracking Requested - why for this release]: Crashes on in app-survey submit

Component: Toolbar → Experimentation and Telemetry

Microsurveys and the navbar are parts of the same composable already
-> updating the navbar separately in response to microsurvey changes would result
in updating the same composable that called the update which leads to a crash.

This change separates updating the XML toolbar layout from the navbar composable
and allows to update the navbar separately, if not already in the process of
updating the composable.

Pushed by plingurar@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/34cbc79fe32c Avoid resetting the navbar after microsurvey ends r=android-reviewers,Roger
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 135 Branch
Flags: qe-verify+

Verified as fixed in Nightly 135.0a1 from 12/10 with Google Pixel 8 Pro (Android 14).
I've enrolled in the TEST Microsurvey: Android Homepage CSAT 2024 ICON TEST experiment using nimbus-cli.
The application remained stable after interacting with the microsurey.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: