Skip to content

crash when setting live tv channel as favorite #4384

@viraco

Description

@viraco

This issue respects the following points:

  • This issue is not already reported on GitHub (I've searched it).
  • I agree to follow Jellyfin's Code of Conduct.
  • This report addresses only a single issue; If you encounter multiple issues, kindly create separate reports for each one.

Describe the bug

  1. goto live tv guide
  2. long press on ok button to open "tune, record, record series, fav" window
  3. click the fav icon/button

android tv application crashes, sends log to server, but still marks channel as favorite

this behavior happens on multiple different android tv devices.

Logs


client: Jellyfin for Android TV
client_version: 0.18.3
client_repository: https://github.com/jellyfin/jellyfin-androidtv
type: crash_report
format: markdown

Logs

Stack Trace:

java.lang.ClassCastException: android.widget.TextView cannot be cast to org.jellyfin.androidtv.ui.GuideChannelHeader
	at org.jellyfin.androidtv.ui.livetv.LiveTvGuideFragment.refreshFavorite(LiveTvGuideFragment.java:238)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7.lambda$onClick$0$org-jellyfin-androidtv-ui-LiveProgramDetailPopup$7(LiveProgramDetailPopup.java:268)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopupHelperKt$toggleFavorite$1.invokeSuspend(LiveProgramDetailPopupHelper.kt:148)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:65)
	at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:327)
	at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:146)
	at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
	at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:11)
	at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:70)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	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}@dca84a4, Dispatchers.Main.immediate]

interface io.ktor.utils.io.ByteReadChannel (Kotlin reflection is not available)
01-05 12:17:43.880 E/ACRA    (20244): ACRA caught a ClassCastException for org.jellyfin.androidtv
01-05 12:17:43.880 E/ACRA    (20244): java.lang.ClassCastException: android.widget.TextView cannot be cast to org.jellyfin.androidtv.ui.GuideChannelHeader
01-05 12:17:43.880 E/ACRA    (20244): 	at org.jellyfin.androidtv.ui.livetv.LiveTvGuideFragment.refreshFavorite(LiveTvGuideFragment.java:238)
01-05 12:17:43.880 E/ACRA    (20244): 	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7.lambda$onClick$0$org-jellyfin-androidtv-ui-LiveProgramDetailPopup$7(LiveProgramDetailPopup.java:268)
01-05 12:17:43.880 E/ACRA    (20244): 	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
01-05 12:17:43.880 E/ACRA    (20244): 	at org.jellyfin.androidtv.ui.LiveProgramDetailPopupHelperKt$toggleFavorite$1.invokeSuspend(LiveProgramDetailPopupHelper.kt:148)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:65)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:327)
01-05 12:17:43.880 E/ACRA    (20244): 	at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:146)
01-05 12:17:43.880 E/ACRA    (20244): 	at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
01-05 12:17:43.880 E/ACRA    (20244): 	at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:11)
01-05 12:17:43.880 E/ACRA    (20244): 	at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:70)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
01-05 12:17:43.880 E/ACRA    (20244): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
01-05 12:17:43.880 E/ACRA    (20244): 	at android.os.Handler.handleCallback(Handler.java:938)
01-05 12:17:43.880 E/ACRA    (20244): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-05 12:17:43.880 E/ACRA    (20244): 	at android.os.Looper.loopOnce(Looper.java:201)
01-05 12:17:43.880 E/ACRA    (20244): 	at android.os.Looper.loop(Looper.java:288)
01-05 12:17:43.880 E/ACRA    (20244): 	at android.app.ActivityThread.main(ActivityThread.java:7839)
01-05 12:17:43.880 E/ACRA    (20244): 	at java.lang.reflect.Method.invoke(Native Method)
01-05 12:17:43.880 E/ACRA    (20244): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
01-05 12:17:43.880 E/ACRA    (20244): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
01-05 12:17:43.880 E/ACRA    (20244): 	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@dca84a4, Dispatchers.Main.immediate]
01-05 12:17:43.880 D/ACRA    (20244): Building report
01-05 12:17:43.883 D/ACRA    (20244): Starting collectors with priority FIRST
01-05 12:17:43.884 D/ACRA    (20244): Calling collector org.acra.collector.DropBoxCollector
01-05 12:17:43.884 D/ACRA    (20244): Calling collector org.acra.collector.LogCatCollector
01-05 12:17:43.884 D/ACRA    (20244): Calling collector org.acra.collector.StacktraceCollector
01-05 12:17:43.884 D/ACRA    (20244): Collector org.acra.collector.DropBoxCollector completed
01-05 12:17:43.885 D/ACRA    (20244): Collector org.acra.collector.StacktraceCollector completed
01-05 12:17:43.892 D/ACRA    (20244): Retrieving logcat output (buffer:default)...

App information

App version: 0.18.3 (180399)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"oppen","BOOTLOADER":"01.01.240305.172728","BRAND":"MAG","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"YHT","DISPLAY":"SGZ4.240822.002.12267853","FINGERPRINT":"MAG\/MAG555\/YHT:12\/SGZ4.240822.002\/12267853:user\/release-keys","HARDWARE":"amlogic","HOST":"r-04ee229aec0a6463-7v78","ID":"SGZ4.240822.002","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"SDMC","MODEL":"MAG555","ODM_SKU":"unknown","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"MAG555","RADIO":"unknown","SKU":"unknown","SOC_MANUFACTURER":"Amlogic","SOC_MODEL":"AMLS905Y4","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1724381419000,"TYPE":"user","UNKNOWN":"unknown","USER":"android-build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"12267853","MEDIA_PERFORMANCE_CLASS":0,"PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"12","RELEASE_OR_CODENAME":"12","SDK":"31","SDK_INT":31,"SECURITY_PATCH":"2024-09-01"}}

Build config:

{"APPLICATION_ID":"org.jellyfin.androidtv","BUILD_TYPE":"release","DEBUG":false,"DEVELOPMENT":false,"VERSION_CODE":180399,"VERSION_NAME":"0.18.3"}

Device information

Android version: 12
Device brand: MAG
Device product: MAG555
Device model: MAG555

Crash information

Start time: 2025-01-05T12:15:33.047-05:00
Crash time: 2025-01-05T12:17:43.975-05:00

+++++++++++++++++++++++++++++++++++++++++


client: Jellyfin for Android TV
client_version: 0.18.3
client_repository: https://github.com/jellyfin/jellyfin-androidtv
type: crash_report
format: markdown

Logs

Stack Trace:

java.lang.ClassCastException: android.widget.TextView cannot be cast to org.jellyfin.androidtv.ui.GuideChannelHeader
	at org.jellyfin.androidtv.ui.livetv.LiveTvGuideFragment.refreshFavorite(LiveTvGuideFragment.java:238)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7.lambda$onClick$0$org-jellyfin-androidtv-ui-LiveProgramDetailPopup$7(LiveProgramDetailPopup.java:268)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopup$7$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
	at org.jellyfin.androidtv.ui.LiveProgramDetailPopupHelperKt$toggleFavorite$1.invokeSuspend(LiveProgramDetailPopupHelper.kt:148)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	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}@c8ebd82, Dispatchers.Main.immediate]

App information

App version: 0.18.3 (180399)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"sabrina","BOOTLOADER":"01.01.241025.065700","BRAND":"google","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"sabrina","DISPLAY":"STTL.240812.006.N1.12570082","FINGERPRINT":"google\/sabrina_prod_stable\/sabrina:12\/STTL.240812.006.N1\/12570082:user\/release-keys","HARDWARE":"amlogic","HOST":"r-d5a25cf08fde7218-1c0z","ID":"STTL.240812.006.N1","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Google","MODEL":"Chromecast","ODM_SKU":"US","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"sabrina_prod_stable","RADIO":"unknown","SKU":"US","SOC_MANUFACTURER":"Amlogic","SOC_MODEL":"AMLS905D3","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1730194545000,"TYPE":"user","UNKNOWN":"unknown","USER":"android-build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"12570082","MEDIA_PERFORMANCE_CLASS":0,"PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"12","RELEASE_OR_CODENAME":"12","SDK":"31","SDK_INT":31,"SECURITY_PATCH":"2024-09-01"}}

Build config:

{"APPLICATION_ID":"org.jellyfin.androidtv","BUILD_TYPE":"release","DEBUG":false,"DEVELOPMENT":false,"VERSION_CODE":180399,"VERSION_NAME":"0.18.3"}

Device information

Android version: 12
Device brand: google
Device product: sabrina_prod_stable
Device model: Chromecast

Crash information

Start time: 2025-01-05T13:58:17.690-05:00
Crash time: 2025-01-05T13:58:34.720-05:00

Application version

0.18.3

Where did you install the app from?

Google Play Store

Device information

infomir mag555; chromecast with google tv (4k) (white puck not the new one)

Android version

android 12

Jellyfin server version

10.10.3

Other sources

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions