jellyfin / jellyfin-androidtv

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

Jellyfin app fails to start sometimes in Chromecast. Null pointer exception in logs #3548

Open alexjyong opened 4 months ago

alexjyong commented 4 months ago

Describe the bug

  1. Select Jellyfin application in Chromecast
  2. Toast appears mentioning that Jellyfin failed to start and a log has been sent to server.
  3. If you click again, it will eventually let you in.

All in all, low severity, as it happens once in awhile and a click or two on the app on the screen makes it goes away, but it is a bit odd.

Logs


client: Jellyfin for Android TV client_version: 0.16.10 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
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
    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:2210)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    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)
Caused by: java.lang.NullPointerException
    at org.jellyfin.androidtv.data.querying.StdItemQuery.<init>(StdItemQuery.kt:23)
    at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.setupQueries(BrowseGridFragment.java:545)
    at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.onCreate(BrowseGridFragment.java:177)
    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:122)
    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:57)
    at android.app.Activity.performCreate(Activity.java:8051)
    at android.app.Activity.performCreate(Activity.java:8031)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
    ... 12 more

Logcat:

05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:57)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.Activity.performCreate(Activity.java:8051)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.Activity.performCreate(Activity.java:8031)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.os.Handler.dispatchMessage(Handler.java:106)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.os.Looper.loopOnce(Looper.java:201)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.os.Looper.loop(Looper.java:288)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at android.app.ActivityThread.main(ActivityThread.java:7839)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at java.lang.reflect.Method.invoke(Native Method)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-02 17:37:11.481 E/DisplayPreferencesStore( 8653):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-02 17:37:11.482 I/DisplayPreferencesStore( 8653): Creating an empty DisplayPreferencesDto for next commit.
05-02 17:37:11.486 D/BrowseGridFragment( 8653): numCardsScreen <0>
05-02 17:37:11.489 D/AndroidRuntime( 8653): Shutting down VM
--------- beginning of crash
05-02 17:37:11.490 E/AndroidRuntime( 8653): FATAL EXCEPTION: main
05-02 17:37:11.490 E/AndroidRuntime( 8653): Process: org.jellyfin.androidtv, PID: 8653
05-02 17:37:11.490 E/AndroidRuntime( 8653): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jellyfin.androidtv/org.jellyfin.androidtv.ui.browsing.MainActivity}: java.lang.NullPointerException
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.os.Handler.dispatchMessage(Handler.java:106)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.os.Looper.loopOnce(Looper.java:201)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.os.Looper.loop(Looper.java:288)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.ActivityThread.main(ActivityThread.java:7839)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at java.lang.reflect.Method.invoke(Native Method)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-02 17:37:11.490 E/AndroidRuntime( 8653): Caused by: java.lang.NullPointerException
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at org.jellyfin.androidtv.data.querying.StdItemQuery.<init>(StdItemQuery.kt:23)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.setupQueries(BrowseGridFragment.java:545)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.onCreate(BrowseGridFragment.java:177)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:122)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:57)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.Activity.performCreate(Activity.java:8051)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.Activity.performCreate(Activity.java:8031)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
05-02 17:37:11.490 E/AndroidRuntime( 8653):     ... 12 more
05-02 17:37:11.491 E/ACRA    ( 8653): ACRA caught a RuntimeException for org.jellyfin.androidtv
05-02 17:37:11.491 E/ACRA    ( 8653): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jellyfin.androidtv/org.jellyfin.androidtv.ui.browsing.MainActivity}: java.lang.NullPointerException
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.os.Handler.dispatchMessage(Handler.java:106)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.os.Looper.loopOnce(Looper.java:201)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.os.Looper.loop(Looper.java:288)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.ActivityThread.main(ActivityThread.java:7839)
05-02 17:37:11.491 E/ACRA    ( 8653):   at java.lang.reflect.Method.invoke(Native Method)
05-02 17:37:11.491 E/ACRA    ( 8653):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-02 17:37:11.491 E/ACRA    ( 8653):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-02 17:37:11.491 E/ACRA    ( 8653): Caused by: java.lang.NullPointerException
05-02 17:37:11.491 E/ACRA    ( 8653):   at org.jellyfin.androidtv.data.querying.StdItemQuery.<init>(StdItemQuery.kt:23)
05-02 17:37:11.491 E/ACRA    ( 8653):   at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.setupQueries(BrowseGridFragment.java:545)
05-02 17:37:11.491 E/ACRA    ( 8653):   at org.jellyfin.androidtv.ui.browsing.BrowseGridFragment.onCreate(BrowseGridFragment.java:177)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:122)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252)
05-02 17:37:11.491 E/ACRA    ( 8653):   at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219)
05-02 17:37:11.491 E/ACRA    ( 8653):   at org.jellyfin.androidtv.ui.browsing.MainActivity.onCreate(MainActivity.kt:57)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.Activity.performCreate(Activity.java:8051)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.Activity.performCreate(Activity.java:8031)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
05-02 17:37:11.491 E/ACRA    ( 8653):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
05-02 17:37:11.491 E/ACRA    ( 8653):   ... 12 more
05-02 17:37:11.491 D/ACRA    ( 8653): Building report
05-02 17:37:11.492 D/ACRA    ( 8653): Starting collectors with priority FIRST
05-02 17:37:11.492 D/ACRA    ( 8653): Calling collector org.acra.collector.DropBoxCollector
05-02 17:37:11.493 D/ACRA    ( 8653): Collector org.acra.collector.DropBoxCollector completed
05-02 17:37:11.493 D/ACRA    ( 8653): Calling collector org.acra.collector.StacktraceCollector
05-02 17:37:11.494 D/ACRA    ( 8653): Calling collector org.acra.collector.LogCatCollector
05-02 17:37:11.494 D/ACRA    ( 8653): Collector org.acra.collector.StacktraceCollector completed
05-02 17:37:11.509 D/ACRA    ( 8653): Retrieving logcat output (buffer:default)...

App information

App version: 0.16.10 (161099)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"boreal","BOOTLOADER":"01.01.231214.035015","BRAND":"google","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"boreal","DISPLAY":"STTL.240206.002","FINGERPRINT":"google\/boreal\/boreal:12\/STTL.240206.002\/11417109:user\/release-keys","HARDWARE":"amlogic","HOST":"abfarm-release-2004-0234","ID":"STTL.240206.002","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Google","MODEL":"Chromecast HD","ODM_SKU":"unknown","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"boreal","RADIO":"unknown","SKU":"US","SOC_MANUFACTURER":"Amlogic","SOC_MODEL":"AMLS805X2","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1707302944000,"TYPE":"user","UNKNOWN":"unknown","USER":"android-build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"11417109","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-03-01"}}

Build config:

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

Device information

Android version: 12
Device brand: google
Device product: boreal
Device model: Chromecast HD

Crash information

Start time: 2024-05-02T17:37:10.621-04:00
Crash time: 2024-05-02T17:37:11.792-04:00

Application version

0.16.10

Where did you install the app from?

Google Play

Device information

Chromecast HD by Google

Android version

12

Jellyfin server version

10.8.13

Alliyance commented 4 months ago

Same here with Chromecast and firetv. Null pointer

Supposedly it's a known issue but hard to fix.

alexjyong commented 4 months ago

@Alliyance yeah and it doesn't happen all the time, so I'm guessing it's hard to reproduce either. Plus, it isn't a show stopper, although I could see a user who is less likely to try hitting the app again assuming that it's down for good.

Judging by the logs, I'm guessing (at least) part of the problem starts here? https://github.com/jellyfin/jellyfin-androidtv/blob/3cb22b0c8fcfef5c8a7abb8531acbd3187d59f76/app/src/main/java/org/jellyfin/androidtv/data/querying/StdItemQuery.kt#L23

Alliyance commented 4 months ago

Exactly. I've been using Chromecast and Firetv since 2 years and that issue started only a couple of months ago. I don't recall having that problem before. 🤷🏼‍♂️

wusisu commented 3 months ago

same NPE happens each time when I play the one MP4(hevc) on andriodTV, while others media files have no problem.

The NPE log: https://pub-71b425de9a40452caa97984e92be931f.r2.dev/upload_org.jellyfin.androidtv_0.16.10_20240528132615_fa61a5d60e6842998853c70c6e89f4ee.log

every mp4 of this serial documentary has the same error, so I think the problem may be caused by the file codec. so I provide the mp4 ffmpeg info:

ffmpeg -i '重生 - S01E01 - 第1集.mp4'
ffmpeg version 7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 15.0.0 (clang-1500.3.9.4)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '重生 - S01E01 - 第1集.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    title           : 274602962.ts
    encoder         : Lavf58.27.103
  Duration: 00:51:57.98, start: 0.000000, bitrate: 20020 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 3840x2160 [SAR 1:1 DAR 16:9], 19886 kb/s, 25 fps, 25 tbr, 10000k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: mp3 (mp3float) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]
At least one output file must be specified
alexjyong commented 3 months ago

Just updated to the most recent version of Jellyfin server. Maybe the issue is on the server end? going to keep an eye on things.