jellyfin / jellyfin-androidtv

Android TV Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.67k stars 457 forks source link

Jellyfin Client Crashes Upon Opening #3341

Closed jechton closed 7 months ago

jechton commented 7 months ago

Describe the bug

Open Jellyfin, no local servers discovered. Enter IP. Use Quick Connect to log in, works correctly. as soon as logged in, client crashes. On subsequent openings, client crashes.

Logs

Stack Trace: org.jellyfin.sdk.api.client.exception.InvalidStatusException: Invalid HTTP status in response: 500 at org.jellyfin.sdk.api.client.KtorClient.request$suspendImpl(KtorClient.kt:109) at org.jellyfin.sdk.api.client.KtorClient$request$1.invokeSuspend(Unknown Source:19) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) 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: [StandaloneCoroutine{Cancelling}@5e3419, Dispatchers.Main.immediate]

Logcat:

01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) 01-31 20:18:45.920 E/LeanbackChannelWorker(18071): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 01-31 20:18:45.926 I/WM-WorkerWrapper(18071): Worker result RETRY for Work [ id=75131f31-ed3e-4240-b570-d6e3020b6cec, tags={ org.jellyfin.androidtv.integration.LeanbackChannelWorker } ]

01-31 20:18:45.943 D/ACRA (18071): onActivityPaused class org.jellyfin.androidtv.ui.startup.StartupActivity 01-31 20:18:45.964 I/ActivityThemeExtensionsKt(18071): Applying theme DARK 01-31 20:18:45.966 D/ACRA (18071): onActivityCreated class org.jellyfin.androidtv.ui.browsing.MainActivity 01-31 20:18:45.988 D/ACRA (18071): onActivityStarted class org.jellyfin.androidtv.ui.browsing.MainActivity 01-31 20:18:45.990 D/ACRA (18071): onActivityResumed class org.jellyfin.androidtv.ui.browsing.MainActivity 01-31 20:18:46.052 D/Compose Focus(18071): Owner FocusChanged(true) 01-31 20:18:46.197 I/HomeRowsFragment(18071): Updating audio queue in HomeFragment (onQueueStatusChanged) 01-31 20:18:46.200 I/org.jellyfin.sdk.api.client.KtorClient(18071): GET http://192.168.1.187:8096/LiveTv/Programs/Recommended?userId=7ebceb6f-2911-44e1-af41-40e8a41dd4b6&limit=1&isAiring=true&imageTypeLimit=1&enableTotalRecordCount=false 01-31 20:18:46.204 D/Compose Focus(18071): Owner FocusChanged(false) 01-31 20:18:46.272 D/Compose Focus(18071): Owner FocusChanged(true) 01-31 20:18:46.278 D/Compose Focus(18071): Owner FocusChanged(false) 01-31 20:18:46.280 I/HomeRowsFragment(18071): Updating audio queue in HomeFragment (onResume) 01-31 20:18:46.611 D/ACRA (18071): onActivityStopped class org.jellyfin.androidtv.ui.startup.StartupActivity 01-31 20:18:46.626 D/ACRA (18071): onActivityDestroyed class org.jellyfin.androidtv.ui.startup.StartupActivity 01-31 20:18:46.627 D/Compose Focus(18071): Owner FocusChanged(false) 01-31 20:18:46.627 D/Compose Focus(18071): Owner FocusChanged(true) 01-31 20:18:46.628 D/Compose Focus(18071): Owner FocusChanged(false) 01-31 20:18:46.650 D/jellyfin-apiclient(18071): Adding request to queue: http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Views?format=json 01-31 20:18:46.681 I/org.jellyfin.sdk.api.client.KtorClient(18071): GET http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Resume?limit=50&fields=PrimaryImageAspectRatio&fields=Overview&fields=ItemCounts&fields=DisplayPreferencesId&fields=ChildCount&mediaTypes=Video&imageTypeLimit=1&enableTotalRecordCount=false&enableImages=true&excludeActiveSessions=false 01-31 20:18:46.712 I/org.jellyfin.sdk.api.client.KtorClient(18071): GET http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Resume?limit=50&fields=PrimaryImageAspectRatio&fields=Overview&fields=ItemCounts&fields=DisplayPreferencesId&fields=ChildCount&mediaTypes=Audio&imageTypeLimit=1&enableTotalRecordCount=false&enableImages=true&excludeActiveSessions=false 01-31 20:18:46.728 D/jellyfin-apiclient(18071): Adding request to queue: http://192.168.1.187:8096/Shows/NextUp?Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&UserId=7ebceb6f-2911-44e1-af41-40e8a41dd4b6&Limit=50&ImageTypeLimit=1&format=json 01-31 20:18:46.734 I/org.jellyfin.sdk.api.client.KtorClient(18071): GET http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Views?includeHidden=false 01-31 20:18:46.902 D/jellyfin-apiclient(18071): Adding request to queue: http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Latest?ParentId=9d7ad6af-e9af-a2da-b1a2-f6e00ad28fa6&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount%2CSeriesPrimaryImage&Limit=50&GroupItems=true&format=json 01-31 20:18:46.905 D/jellyfin-apiclient(18071): Adding request to queue: http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Latest?ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount%2CSeriesPrimaryImage&Limit=50&GroupItems=true&format=json 01-31 20:18:46.908 D/jellyfin-apiclient(18071): Adding request to queue: http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Latest?ParentId=a656b907-eb3a-7353-2e40-e44b968d0225&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount%2CSeriesPrimaryImage&Limit=50&GroupItems=true&format=json

01-31 20:18:46.982 E/Volley (18071): [36669] NetworkUtility.shouldRetryException: Unexpected response code 500 for http://192.168.1.187:8096/Users/7ebceb6f-2911-44e1-af41-40e8a41dd4b6/Items/Latest?ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount%2CSeriesPrimaryImage&Limit=50&GroupItems=true&format=json 01-31 20:18:47.026 D/ItemRowAdapterHelperKt(18071): Creating items from 0 existing and 0 new, adapter size is 0 01-31 20:18:47.034 E/ACRA (18071): ACRA caught a InvalidStatusException for org.jellyfin.androidtv 01-31 20:18:47.034 E/ACRA (18071): org.jellyfin.sdk.api.client.exception.InvalidStatusException: Invalid HTTP status in response: 500 01-31 20:18:47.034 E/ACRA (18071): at org.jellyfin.sdk.api.client.KtorClient.request$suspendImpl(KtorClient.kt:109) 01-31 20:18:47.034 E/ACRA (18071): at org.jellyfin.sdk.api.client.KtorClient$request$1.invokeSuspend(Unknown Source:19) 01-31 20:18:47.034 E/ACRA (18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:47.034 E/ACRA (18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:47.034 E/ACRA (18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:47.034 E/ACRA (18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) 01-31 20:18:47.034 E/ACRA (18071): at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) 01-31 20:18:47.034 E/ACRA (18071): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 01-31 20:18:47.034 E/ACRA (18071): at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) 01-31 20:18:47.034 E/ACRA (18071): at android.os.Handler.handleCallback(Handler.java:938) 01-31 20:18:47.034 E/ACRA (18071): at android.os.Handler.dispatchMessage(Handler.java:99) 01-31 20:18:47.034 E/ACRA (18071): at android.os.Looper.loopOnce(Looper.java:201) 01-31 20:18:47.034 E/ACRA (18071): at android.os.Looper.loop(Looper.java:288)

01-31 20:18:47.034 E/ACRA (18071): at android.app.ActivityThread.main(ActivityThread.java:7839) 01-31 20:18:47.034 E/ACRA (18071): at java.lang.reflect.Method.invoke(Native Method) 01-31 20:18:47.034 E/ACRA (18071): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 01-31 20:18:47.034 E/ACRA (18071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 01-31 20:18:47.034 E/ACRA (18071): Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@5e3419, Dispatchers.Main.immediate] 01-31 20:18:47.035 D/ACRA (18071): Building report 01-31 20:18:47.035 D/ACRA (18071): Starting collectors with priority FIRST 01-31 20:18:47.036 D/ACRA (18071): Calling collector org.acra.collector.LogCatCollector 01-31 20:18:47.037 D/ACRA (18071): Calling collector org.acra.collector.DropBoxCollector 01-31 20:18:47.037 D/ACRA (18071): Collector org.acra.collector.DropBoxCollector completed 01-31 20:18:47.038 D/ACRA (18071): Calling collector org.acra.collector.StacktraceCollector 01-31 20:18:47.040 D/ACRA (18071): Collector org.acra.collector.StacktraceCollector completed 01-31 20:18:47.043 D/ACRA (18071): Retrieving logcat output (buffer:default)...

Application version

0.16.4

Where did you install the app from?

Google Play

Device information

Chromecast HD

Android version

Android 12

Jellyfin server version

10.9.0

MichaelRUSF commented 7 months ago

The JellfyingATV client isn't compatible with the current 10.9 build. You'll need to use the stable branch (10.8.z) until the app supports it.

nielsvanvelzen commented 7 months ago

I will start work on 10.9 support once the first alpha/beta/rc/whatever is released. Closing as wontfix for now.