jellyfin / jellyfin-androidtv

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

Fire Stick crash while playback #3231

Closed gjpc closed 9 months ago

gjpc commented 9 months ago

Describe the bug

Simply play any H.264(X264) 30 FPS AAC (avcodec), Stero AC3 Passthru with Chapter markers and there is a crash at the chapter marker. Log included. This happens on both ExoPlayer and LibVLC

same file plays on Windows Jellyfin client, ipad client and VLC media player

Logs

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

***Stack Trace***: 

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jellyfin.androidtv/org.jellyfin.androidtv.ui.browsing.MainActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3468)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3626)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2081)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7719)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
    at org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>(Unknown Source:12)
    at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.initActions(CustomPlaybackTransportControlGlue.java:197)
    at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.<init>(CustomPlaybackTransportControlGlue.java:106)
    at org.jellyfin.androidtv.ui.playback.overlay.LeanbackOverlayFragment.onCreate(LeanbackOverlayFragment.java:32)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
    at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
    at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
    at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
    at androidx.fragment.app.Fragment.restoreChildFragmentState(Fragment.java:1989)
    at androidx.fragment.app.Fragment.onCreate(Fragment.java:1967)
    at org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment.onCreate(CustomPlaybackOverlayFragment.java:174)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
    at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
    at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
    at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
    at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
    at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
    at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:55)
    at android.app.Activity.performCreate(Activity.java:8019)
    at android.app.Activity.performCreate(Activity.java:8002)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3441)
    ... 11 more

***Logcat***: 
```log
12-15 22:49:27.219 W/lyfin.androidt(28272): Accessing hidden method Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V (greylist-max-o, reflection, denied)
12-15 22:49:27.221 I/TetheringManager(28272): registerTetheringEventCallback:org.jellyfin.androidtv
12-15 22:49:27.244 I/LogInitializer(28272): Debug tree planted
12-15 22:49:27.292 I/MigrationContext(28272): Requested migration from 2 to 2. Found 1 migrations in total.
12-15 22:49:27.311 W/lyfin.androidt(28272): Accessing hidden method Landroid/graphics/ImageDecoder;->createSource([B)Landroid/graphics/ImageDecoder$Source; (greylist-max-o, linking, denied)
12-15 22:49:27.324 I/SessionRepositoryImpl(28272): Restoring session
12-15 22:49:27.340 I/org.jellyfin.sdk.api.client.KtorClient(28272): GET http://10.10.0.5:8096/Branding/Configuration
12-15 22:49:27.408 I/MigrationContext(28272): Requested migration from 7 to 7. Found 1 migrations in total.
12-15 22:49:27.412 I/ActivityThemeExtensionsKt(28272): Applying theme DARK
--------- beginning of crash
12-15 22:49:27.502 E/AndroidRuntime(28272): FATAL EXCEPTION: main
12-15 22:49:27.502 E/AndroidRuntime(28272): Process: org.jellyfin.androidtv, PID: 28272
12-15 22:49:27.502 E/AndroidRuntime(28272): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jellyfin.androidtv/org.jellyfin.androidtv.ui.browsing.MainActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3468)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3626)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2081)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.os.Handler.dispatchMessage(Handler.java:106)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.os.Looper.loop(Looper.java:223)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.ActivityThread.main(ActivityThread.java:7719)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at java.lang.reflect.Method.invoke(Native Method)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
12-15 22:49:27.502 E/AndroidRuntime(28272): Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>(Unknown Source:12)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.initActions(CustomPlaybackTransportControlGlue.java:197)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.<init>(CustomPlaybackTransportControlGlue.java:106)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.playback.overlay.LeanbackOverlayFragment.onCreate(LeanbackOverlayFragment.java:32)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.Fragment.restoreChildFragmentState(Fragment.java:1989)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.Fragment.onCreate(Fragment.java:1967)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment.onCreate(CustomPlaybackOverlayFragment.java:174)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:55)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.Activity.performCreate(Activity.java:8019)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.Activity.performCreate(Activity.java:8002)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
12-15 22:49:27.502 E/AndroidRuntime(28272):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3441)
12-15 22:49:27.502 E/AndroidRuntime(28272):     ... 11 more
12-15 22:49:27.503 E/ACRA    (28272): ACRA caught a RuntimeException for org.jellyfin.androidtv
12-15 22:49:27.503 E/ACRA    (28272): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jellyfin.androidtv/org.jellyfin.androidtv.ui.browsing.MainActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3468)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3626)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2081)
12-15 22:49:27.503 E/ACRA    (28272):   at android.os.Handler.dispatchMessage(Handler.java:106)
12-15 22:49:27.503 E/ACRA    (28272):   at android.os.Looper.loop(Looper.java:223)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.ActivityThread.main(ActivityThread.java:7719)
12-15 22:49:27.503 E/ACRA    (28272):   at java.lang.reflect.Method.invoke(Native Method)
12-15 22:49:27.503 E/ACRA    (28272):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
12-15 22:49:27.503 E/ACRA    (28272):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
12-15 22:49:27.503 E/ACRA    (28272): Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>, parameter playbackController
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.playback.overlay.action.PlaybackSpeedAction.<init>(Unknown Source:12)
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.initActions(CustomPlaybackTransportControlGlue.java:197)
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.playback.overlay.CustomPlaybackTransportControlGlue.<init>(CustomPlaybackTransportControlGlue.java:106)
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.playback.overlay.LeanbackOverlayFragment.onCreate(LeanbackOverlayFragment.java:32)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.Fragment.restoreChildFragmentState(Fragment.java:1989)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.Fragment.onCreate(Fragment.java:1967)
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.playback.CustomPlaybackOverlayFragment.onCreate(CustomPlaybackOverlayFragment.java:174)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
12-15 22:49:27.503 E/ACRA    (28272):   at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
12-15 22:49:27.503 E/ACRA    (28272):   at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:55)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.Activity.performCreate(Activity.java:8019)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.Activity.performCreate(Activity.java:8002)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
12-15 22:49:27.503 E/ACRA    (28272):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3441)
12-15 22:49:27.503 E/ACRA    (28272):   ... 11 more

App information

App version: 0.16.0 (160099)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"karat","BOOTLOADER":"unknown","BRAND":"Amazon","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"karat","DISPLAY":"RS8102.1967N","FINGERPRINT":"Amazon\/karat\/karat:11\/RS8102.1967N\/0021978656644:user\/amz-p,release-keys","HARDWARE":"mt8696","HOST":"c5-ri-1804-use1a-b-18-04-fos8-24","ID":"RS8102.1967N","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Amazon","MODEL":"AFTKM","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"karat","RADIO":"unknown","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"amz-p,release-keys","TIME":1701543841000,"TYPE":"user","UNKNOWN":"unknown","USER":"build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"RP1A.200720.009","CODENAME":"REL","INCREMENTAL":"0021978656644","PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"11","RELEASE_OR_CODENAME":"11","SDK":"30","SDK_INT":30,"SECURITY_PATCH":"2020-09-05"}}

Build config:

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

Device information

Android version: 11
Device brand: Amazon
Device product: karat
Device model: AFTKM

Crash information

Start time: 2023-12-15T22:49:27.169-08:00
Crash time: 2023-12-15T22:49:27.554-08:00



### Application version

0.16.0

### Where did you install the app from?

Amazon Appstore

### Device information

Amazon karat AFTKM

### Android version

Android 11

### Jellyfin server version

10.8.13

### Which video player implementations does this bug apply to?

- [ ] Web player (default)
- [X] Integrated player (ExoPlayer)
- [ ] External player (VLC, mpv, MX Player)
nielsvanvelzen commented 9 months ago

I'm unable to reproduce the issue but I've made some changes for 0.16.1 that may fix the crash. Did this issue happen only for one specific file or for everything? And how exactly did you start the media (from which screen/button etc.)?

gjpc commented 9 months ago

@nielsvanvelzen I am not sure how many different ways I could start a video. The method I use is to select the Jellyfin server on the home page. When the Jellyfin main page appears I navigated to the Recently added shows and select the video. It then plays until the crash happens. I have quite a few files of different video formats that do not play all the way through, so it is not one specific file that causes the crash. Looking at the log files I have found different crashes. I am attaching these logs to this comment. I have two fire tv's and the problem happens on both.

Fatal exception operation not implemented.Log

crash report attempt to invoke virtual method on null object.Log

I turned off the server hardware transcoding and get the same results. I'll be glad to provide any additional information you may need. Meanwhile I downloaded the VLC app and have the fire TV stick using VLC as the external video player and all is working well.

joshjryan commented 9 months ago

I'm seeing this same issue with 0.16 on 3 different firesticks, and not on my Nvidia Shield.

joshjryan commented 9 months ago

Confirming that https://github.com/jellyfin/jellyfin-androidtv/pull/3232 in 0.16.1 fixes this issues.