Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash on temporary internet loss #524

Open
opusforlife2 opened this issue Oct 12, 2023 · 7 comments
Open

Crash on temporary internet loss #524

opusforlife2 opened this issue Oct 12, 2023 · 7 comments

Comments

@opusforlife2
Copy link

The device momentarily disconnected from the Wifi while an update was being downloaded. This caused the app (v0.9.15) to crash with the following log:

FATAL EXCEPTION: main
Process: com.machiav3lli.fdroid, PID: 4025
androidx.compose.runtime.ComposeRuntimeError: Compose Runtime internal error. Unexpected or incorrect use of the Compose internal runtime API (pending composition has not been applied). Please report to Google or use https://goo.gle/compose-feedback
	at androidx.compose.runtime.ComposerKt.composeRuntimeError(Composer.kt:16)
	at androidx.compose.runtime.CompositionImpl.drainPendingModificationsForCompositionLocked(Composition.kt:67)
	at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:4)
	at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:45)
	at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:10)
	at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:10)
	at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:10)
	at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:13)
	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:110)
	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:130)
	at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.measure-0kLqBqw(LazyLayoutMeasureScope.kt:36)
	at androidx.compose.foundation.lazy.LazyMeasuredItemProvider.getAndMeasure-ZjPyQlc(LazyMeasuredItemProvider.kt:11)
	at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:696)
	at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$1$2$1.invoke(LazyLayout.kt:26)
	at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:53)
	at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:42)
	at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2.invoke(AndroidOverscroll.kt:19)
	at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:13)
	at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:15)
	at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:11)
	at androidx.compose.foundation.AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1.invoke(AndroidOverscroll.kt:19)
	at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:13)
	at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:15)
	at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:11)
	at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:6)
	at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:15)
	at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:11)
	at androidx.compose.foundation.layout.FillModifier.measure-3p2s80s(Size.kt:98)
	at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:15)
	at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:11)
	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:9)
	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:64)
	at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:7)
	at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:43)
	at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:75)
	at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:141)
	at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:17)
	at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:25)
	at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:96)
	at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:63)
	at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:14)
	at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:22)
	at android.view.View.draw(View.java:22707)
	at android.view.View.updateDisplayListIfDirty(View.java:21579)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
	at android.view.View.updateDisplayListIfDirty(View.java:21535)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:534)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:540)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:616)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:4531)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4251)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3374)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2179)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8793)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
	at android.view.Choreographer.doCallbacks(Choreographer.java:845)
	at android.view.Choreographer.doFrame(Choreographer.java:780)
	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:7870)
	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)
@machiav3lli
Copy link
Member

Can you please try to reproduce this on 1.0.0-alpha06 or 1.0.0-alpha07?

@opusforlife2
Copy link
Author

Sure. Where can I get the APK? The Releases tab shows no pre-release. I can't seem to find a nightly.link style download link either.

@machiav3lli
Copy link
Member

Test builds are shared only on the community groups (Telegram or Matrix), but here's alpha06 (there's already alpha07 with many fixes but seems to cause some hard bugs for some users)

@opusforlife2
Copy link
Author

Thanks! Is there a reason for the closed groups? I'm used to getting nightlies or debug builds from pre-releases or build servers. Basically anything that doesn't require an extra account.

Alpha06 has a very different bug. When I turned off the internet in the middle of a download, the app just got stuck in that state. I don't mean a complete freeze in the sense of it being unresponsive to touch, but a freeze of the state of the download progress bar, and the Downloading button that can be tapped to cancel the download.

This freeze is so permanent that I can't find any way to get rid of it. Tapping the Downloading button to cancel the download doesn't work. Neither does swiping the app away from Recents. Not even force-stopping the app can fix this.

Tapping the Install button next to the exact version that is currently stuck does something different. It generates a downloading notification for a few seconds, but then that disappears. The download doesn't proceed any further.

Basically, I think I'm gonna have to reinstall the app in order to get back to normal.

@machiav3lli
Copy link
Member

The reason behind publishing test builds of all Neo Applications only in the groups and respectful channels is to limit spammy reports. In my experience, there's a sizable group of GH/GL-users that will get whatever they can and report whatever they face (also not reading existing/closed issues). Same argumentation applies to CI/CD aka nightlies, even more.

We wouldn't blame them, but we wouldn't like to have to handle the whole work to clean up possible mess. In the groups we only have to interrupt when there's a new question/report and the hassle is far less, otherwise the community is pretty helpful and covers most spammy/repeated questions.

@machiav3lli
Copy link
Member

I'm aware of lacking the handling of killed works in the current alphas, but this would be covered of the latest before moving to beta.

A hack to fix the "freeze" is if the app "frozen" has different version to download, then download that till it's finished and then try again with the initial one.

@opusforlife2
Copy link
Author

Totally get you. 80% of reports are usually spam, and it's a drain on your time to deal with them.

Then since the current alphas are showing a different bug than release, let's wait for the first beta, as you say? We can close the issue until then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants