Tobi823 / ffupdater

FFUpdater: Updater for privacy friendly browser
https://f-droid.org/en/packages/de.marmaro.krt.ffupdater
GNU General Public License v3.0
676 stars 32 forks source link

FFUpdater fails to download Firefox Klar because of socket timeout #629

Open TeeTeeHaa opened 1 month ago

TeeTeeHaa commented 1 month ago

Describe the bug

I have a brand new Samsung Galaxy S7 (SM-G30F) with a freshly installed e/OS/ (2.3-s-20240816426375-herolte) based on Android 12. I installed FFUpdater using e/OS/'s App Lounge which downloaded FFUpdater from F-Droid. FFUpdater is version 79.2.4.

I tried to install Firefox Klar browser but unfortunately the download always stops at some random percent number all the time. I tried it several times.

Using either the system's browser (e/OS/ has a fork of Chromite) or a browser on my Windows PC to download the APK file directly works perfectly fine.

To Reproduce

Use FFUpdater on a fresh e/OS/ on a new Samsung Galaxy S7 to install Firefox Klar.

Expected behavior

FFUpdater simply downloads and installs Firefox Klar.

Error message from FFUpdater

Stacktrace:

de.marmaro.krt.ffupdater.network.exceptions.NetworkException: Download of https://archive.mozilla.org/pub/focus/releases/130.0/android/klar-130.0-android-arm64-v8a/klar-130.0.multi.android-arm64-v8a.apk failed.
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress$deferred$1.invokeSuspend(FileDownloader.kt:86)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource.read(RealBufferedSource.kt:39)
    at okio.ForwardingSource.read(ForwardingSource.kt:27)
    at de.marmaro.krt.ffupdater.network.file.ProgressInterceptorResponseBody$trackTransmittedBytes$1.read(ProgressInterceptorResponseBody.kt:42)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:110)
    at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader.downloadFile2(FileDownloader.kt:168)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader.access$downloadFile2(FileDownloader.kt:42)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFile2$1.invokeSuspend(FileDownloader.kt:0)
    ... 8 more

Logs:

de.marmaro.krt.ffupdater.network.exceptions.NetworkException: Download of https://archive.mozilla.org/pub/focus/releases/130.0/android/klar-130.0-android-arm64-v8a/klar-130.0.multi.android-arm64-v8a.apk failed.
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress$deferred$1.invokeSuspend(FileDownloader.kt:86)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource.read(RealBufferedSource.kt:39)
    at okio.ForwardingSource.read(ForwardingSource.kt:27)
    at de.marmaro.krt.ffupdater.network.file.ProgressInterceptorResponseBody$trackTransmittedBytes$1.read(ProgressInterceptorResponseBody.kt:42)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:110)
    at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader.downloadFile2(FileDownloader.kt:168)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader.access$downloadFile2(FileDownloader.kt:42)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFile2$1.invokeSuspend(FileDownloader.kt:0)
    ... 8 more
Device information: Key Value
FFUpdater version 79.2.4 (174) release F-Droid/other
Device SM-G930F (heroltexx, heroltexx, universal8890)
Manufacturer samsung (samsung)
Supported ABIs arm64-v8a, armeabi-v7a, armeabi
Android version 12 (SDK: 32)
OS runner-k3f88v3q-project-53-concurrent-0, root, release-keys, 1723840012000
Tobi823 commented 1 week ago

Sorry for my late reply. Do you still have the issues?

Tobi823 commented 1 week ago

I can't reproduce the problem and I read on GitHub that I should try disabling HTTP2 (and force recreating the connection pool).

I could provide you an APK file so you can test it (if you want) :)

TeeTeeHaa commented 1 week ago

Yes, still have this issue, just tried it again right now. FFUpdater 79.2.4. and download URL to Firefox Klar 131.0.2.

If you want to provide a special APK for me I would try it out.

Tobi823 commented 1 week ago

Can you try this version? Maybe disable the OkHttp connection tool will fix the problem ffupdater-release.zip

TeeTeeHaa commented 1 week ago

Thank you very much for your efforts. I tried it out, but it still fails, actually at the same progress percentage.

Stacktrace:

de.marmaro.krt.ffupdater.network.exceptions.NetworkException: Download of https://archive.mozilla.org/pub/focus/releases/131.0.2/android/klar-131.0.2-android-arm64-v8a/klar-131.0.2.multi.android-arm64-v8a.apk failed.
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress$deferred$1.invokeSuspend(FileDownloader.kt:86)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.kt:143)
    at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.kt:97)
    at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:110)
    at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at de.marmaro.krt.ffupdater.network.file.DownloadProgressInterceptor.intercept(DownloadProgressInterceptor.kt:13)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
    at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:920)

Logs:

de.marmaro.krt.ffupdater.network.exceptions.NetworkException: Download of https://archive.mozilla.org/pub/focus/releases/131.0.2/android/klar-131.0.2-android-arm64-v8a/klar-131.0.2.multi.android-arm64-v8a.apk failed.
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress$deferred$1.invokeSuspend(FileDownloader.kt:86)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.kt:143)
    at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.kt:97)
    at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:110)
    at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at de.marmaro.krt.ffupdater.network.file.DownloadProgressInterceptor.intercept(DownloadProgressInterceptor.kt:13)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
    at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:920)
Device information: Key Value
FFUpdater version 79.2.5 (175) release Github
Device SM-G930F (heroltexx, heroltexx, universal8890)
Manufacturer samsung (samsung)
Supported ABIs arm64-v8a, armeabi-v7a, armeabi
Android version 12 (SDK: 32)
OS runner-k3f88v3q-project-53-concurrent-0, root, release-keys, 1723840012000
Tobi823 commented 1 week ago

Next try :) d9d5888d ffupdater-release.zip

TeeTeeHaa commented 5 days ago

Hmm, different behavior: The download (of Firefox Klar) did not stop at 17% as before but came to 53%. Then it did nothing for a while. And then it crashed, which it did not before. After clicking the notification telling me FFUpdater crashed I was shown the following error message:

Stacktrace:

java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource.read(RealBufferedSource.kt:39)
    at okio.ForwardingSource.read(ForwardingSource.kt:27)
    at de.marmaro.krt.ffupdater.network.file.ProgressInterceptorResponseBody$trackTransmittedBytes$1.read(ProgressInterceptorResponseBody.kt:42)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.InputStream.read(InputStream.java:101)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress4$2.invokeSuspend(FileDownloader.kt:87)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@5da083f, Dispatchers.Main]

Logs:

java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource.read(RealBufferedSource.kt:39)
    at okio.ForwardingSource.read(ForwardingSource.kt:27)
    at de.marmaro.krt.ffupdater.network.file.ProgressInterceptorResponseBody$trackTransmittedBytes$1.read(ProgressInterceptorResponseBody.kt:42)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.InputStream.read(InputStream.java:101)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress4$2.invokeSuspend(FileDownloader.kt:87)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@5da083f, Dispatchers.Main]
Device information: Key Value
FFUpdater version 79.2.5 (175) release Github
Device SM-G930F (heroltexx, heroltexx, universal8890)
Manufacturer samsung (samsung)
Supported ABIs arm64-v8a, armeabi-v7a, armeabi
Android version 12 (SDK: 32)
OS runner-k3f88v3q-project-53-concurrent-0, root, release-keys, 1723840012000
TeeTeeHaa commented 5 days ago

The crashing is reproducible, same error message, different download percentage (53%, 26%, 62%).

I do have a 25 MBit/s = 3,125 MByte/s internet connection and the size of the APK file is 89,2 MB so the download should take 28,544 seconds. 17% of that means a bit under 5 seconds. Maybe 5 seconds is a socket timeout somewhere.

On my Fairphone 5 with e/OS/ based on Android 13 the regular FFUpdater still works perfectly fine (tried out yesterday). It only fails on my Samsung Galaxy S7 with e/OS/ based on Android 12 (also tried out right now, both the regular FFUpdater and "my special" FFUpdater).

Tobi823 commented 5 days ago

I can see in your logs that my last attempt removing de.marmaro.krt.ffupdater.network.file.ProgressInterceptorResponseBody was not successful. (I suspect that my ProgressInterceptorResponseBody is misbehaving. And I dont need it anymore because I found an alternative for tracking the download progress).

Tobi823 commented 5 days ago

Maybe 5 seconds is a socket timeout somewhere.

This could be a clue. Maybe I e.g. use the wrong thread for downloading or forgot to target the downloading thread + Android killing untagged downloads.

I have to check that.

Tobi823 commented 5 days ago

I removed ProgressInterceptorResponseBody completely. Can you try it again? Maybe this will fix the issue 🙈 ffupdater-release.zip

TeeTeeHaa commented 3 days ago

Yes, but no: Stopped at 35%, notification it crashed.

Stacktrace:

java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.InputStream.read(InputStream.java:101)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress4$2.invokeSuspend(FileDownloader.kt:87)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@48d898, Dispatchers.Main]

Logs:

java.net.SocketTimeoutException: timeout
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
    at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
    at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
    at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
    at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
    at java.io.InputStream.read(InputStream.java:101)
    at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress4$2.invokeSuspend(FileDownloader.kt:87)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@48d898, Dispatchers.Main]
Device information: Key Value
FFUpdater version 79.2.5 (175) release Github
Device SM-G930F (heroltexx, heroltexx, universal8890)
Manufacturer samsung (samsung)
Supported ABIs arm64-v8a, armeabi-v7a, armeabi
Android version 12 (SDK: 32)
OS runner-k3f88v3q-project-53-concurrent-0, root, release-keys, 1723840012000
TeeTeeHaa commented 3 days ago

By the way: The button to copy the crash report to the clipboard does not copy the following part of the text:

--------- beginning of main
10-17 21:21:32.027 I/FFUpdater( 8005): InstalledAppsCache: Update cache of installed apps.
10-17 21:21:32.140 I/FFUpdater( 8005): InstalledAppsCache: Cache was updated.
10-17 21:21:32.143 I/FFUpdater( 8005): StorageCleaner: Delete possible cached files of BRAVE, BRAVE_BETA, BRAVE_NIGHTLY, CHROMIUM, CROMITE, DUCKDUCKGO_ANDROID, FAIREMAIL, FENNEC_FDROID, FIREFOX_BETA, FIREFOX_FOCUS, FIREFOX_FOCUS_BETA, FIREFOX_NIGHTLY, FIREFOX_RELEASE, ICERAVEN, K9MAIL, KIWI, MULCH, MULCH_SYSTEMWEBVIEW, MULL_FROM_REPO, ORBOT, PRIVACY_BROWSER, THORIUM, TOR_BROWSER, TOR_BROWSER_ALPHA, VIVALDI
10-17 21:21:32.146 I/FFUpdater( 8005): BackgroundJob:: Start BackgroundWork
10-17 21:21:33.229 D/FFUpdater( 8005): InstalledAppStatusFetcher: Search for latest FFUPDATER update.
10-17 21:21:33.648 I/FFUpdater( 8005): InstalledAppStatusFetcher: Found FFUPDATER Version(versionText=79.2.5, buildDate=null) (406ms).
10-17 21:21:33.655 D/FFUpdater( 8005): InstalledAppStatusFetcher: Search for latest FIREFOX_KLAR update.
10-17 21:21:34.398 I/FFUpdater( 8005): InstalledAppStatusFetcher: Found FIREFOX_KLAR Version(versionText=131.0.3, buildDate=null) (742ms).
10-17 21:21:39.192 D/FFUpdater( 8005): MainActivity: Start DownloadActivity to install or update FIREFOX_KLAR.
10-17 21:21:39.325 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: start fetching, downloading and installation process
10-17 21:21:39.332 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: fetching download information for FIREFOX_KLAR
10-17 21:21:39.401 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: check if an existing download can be reused
10-17 21:21:39.401 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: check if no APK file is cached
10-17 21:21:39.404 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: start download (1/3)
10-17 21:21:39.404 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: start downloading (2/3)
10-17 21:21:39.405 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: start downloading (3/3)
10-17 21:22:49.694 D/FFUpdater( 8005): DownloadActivity FIREFOX_KLAR: download failed
10-17 21:22:49.694 D/FFUpdater( 8005): java.net.SocketTimeoutException: timeout
10-17 21:22:49.694 D/FFUpdater( 8005):  at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:675)
10-17 21:22:49.694 D/FFUpdater( 8005):  at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:684)
10-17 21:22:49.694 D/FFUpdater( 8005):  at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:379)
10-17 21:22:49.694 D/FFUpdater( 8005):  at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
10-17 21:22:49.694 D/FFUpdater( 8005):  at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158)
10-17 21:22:49.694 D/FFUpdater( 8005):  at java.io.InputStream.read(InputStream.java:101)
10-17 21:22:49.694 D/FFUpdater( 8005):  at de.marmaro.krt.ffupdater.network.file.FileDownloader$downloadFileWithProgress4$2.invokeSuspend(FileDownloader.kt:87)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
10-17 21:22:49.694 D/FFUpdater( 8005):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
10-17 21:22:49.699 E/FFUpdater( 8005): CrashListener: Uncaught exception: timeout