jellyfin / jellyfin-androidtv

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

Crash results from recently added media if .mp4 video files have embedded chapters #2125

Closed mikewesten closed 1 year ago

mikewesten commented 1 year ago

Describe the bug

When adding new media to movie library in the form of an .mp4 video file with embedded menu stream/timed text chapters, it results in an Android TV app crash when that item is selected from the 'Latest Movies' row... and also when the movie library itself is selected from the 'My Media' row. The former action results in the movie's backdrop being displayed but remains stuck with nothing else loading except the user avatar and the clock on the top right corner. From here the user can only use the back button and the app then crashes. The latter action of selecting the movie library from the 'My Media' row results in an immediate crash.

This behavior does not occur in the web app or native app, the media is fully navigable, viewable, and playable, and embedded chapters of aforementioned .mp4 video file are fully seekable.

(On Android TV app) I am able to resolve this issue by re-adding the media item as either an .mp4 file with embedded chapters removed, or by an re-adding it as an .mkv file with those very same embedded chapters. When doing either of these two things, the crash ceases to occur. Alternatively, the problematic media item can simply be removed entirely without replacement, and then selecting movie library from the 'My Media' row will no longer result in a crash, instead it loads normally again.

I should note that this issue only began occurring after a recent server update to v10.8.5 And it seems to only affect new media additions. Previously added .mp4 video files with embedded chapters are unaffected somehow. Those media items can be selected, viewed, and played back normally, with no crashes and no issues.

Mediainfo of a problematic video file is as follows `General Complete name : Media/Movies/The Willies (1990)/The.Willies.1990.DVDRip.x264-HANDJOB.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 2.04 GiB Duration : 1 h 31 min Overall bit rate : 3 206 kb/s Movie name : The Willies Writing application : Lavf58.29.100 Comment : The.Willies.1990.DVDRip.x264-HANDJOB

Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 16 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 16 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 1 h 31 min Bit rate : 2 753 kb/s Width : 704 pixels Height : 480 pixels Display aspect ratio : 4:3 Original display aspect ratio : 4:3 Frame rate mode : Constant Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.340 Stream size : 1.75 GiB (86%) Writing library : x264 core 142 r2479 dd79a61 Encoding settings : cabac=1 / ref=16 / deblock=1:-3:-3 / analyse=0x3:0x133 / me=umh / subme=10 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=5 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=24 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=0 / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=25000 / vbv_bufsize=31250 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00 Color range : Limited Color primaries : BT.601 NTSC Transfer characteristics : BT.709 Matrix coefficients : BT.601 Menus : 3 Codec configuration box : avcC

Audio ID : 2 Format : AC-3 Format/Info : Audio Coding 3 Commercial name : Dolby Digital Codec ID : ac-3 Duration : 1 h 31 min Bit rate mode : Constant Bit rate : 448 kb/s Channel(s) : 6 channels Channel layout : L R C LFE Ls Rs Sampling rate : 48.0 kHz Frame rate : 31.250 FPS (1536 SPF) Compression mode : Lossy Stream size : 292 MiB (14%) Language : English Service kind : Complete Main Default : Yes Alternate group : 1 Menus : 3

Menu ID : 3 Format : Timed Text Codec ID : text Duration : 1 h 31 min Language : English Menu For : 1,2 00:00:00.000 : Grosser Than Gross 00:12:59.112 : Back In The Day 00:23:40.169 : Scary Stall 00:31:29.096 : Back For Seconds 00:40:48.655 : Gordy Belcher 00:51:37.136 : Experiments 00:58:39.599 : Truth Televised 01:08:30.398 : Being Mean 01:16:35.800 : Spivey's Gift 01:24:55.465 : What's Real`

Logs

CRASH #1 (selecting item from 'Latest Movies')


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

Logs

Stack Trace:

java.lang.NullPointerException: this.type must not be null
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:431)
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:321)
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:93)
    at org.jellyfin.androidtv.util.ImageUtils.getPrimaryImageUrl(ImageUtils.java:125)
    at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getPrimaryImageUrl(BaseRowItem.java:239)
    at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getImageUrl(BaseRowItem.java:227)
    at org.jellyfin.androidtv.ui.presentation.CardPresenter.onBindViewHolder(CardPresenter.java:435)
    at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
    at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
    at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
    at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
    at androidx.leanback.widget.GridLayoutManager.fastRelayout(GridLayoutManager.java:2014)
    at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2287)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9878)
    at androidx.leanback.widget.GridLayoutManager.layoutChild(GridLayoutManager.java:1807)
    at androidx.leanback.widget.GridLayoutManager.fastRelayout(GridLayoutManager.java:2026)
    at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2287)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:742)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2356)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2078)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1256)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6374)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
    at android.view.Choreographer.doCallbacks(Choreographer.java:689)
    at android.view.Choreographer.doFrame(Choreographer.java:623)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6194)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)

Logcat:

--------- beginning of main
09-29 15:04:08.241 I/KtorClient(27970): POST http://192.168.0.110:8096/Sessions/Capabilities?playableMediaTypes=Video%2CAudio&supportedCommands=DisplayMessage%2CSendString&supportsMediaControl=true&supportsSync=false&supportsPersistentIdentifier=true
09-29 15:04:08.243 I/KtorClient(27970): GET http://192.168.0.110:8096/Playback/BitrateTest?size=4000000
09-29 15:04:08.268 I/OkHttpWebsocketSession(27970): WebSocket has opened
09-29 15:04:08.270 D/ReconnectHelper(27970): Notified about connect, attempts reset
09-29 15:04:08.295 D/SocketInstance(27970): Credential update requested
09-29 15:04:08.296 D/SocketInstance(27970): Unable to update credentials: credentials did not change
09-29 15:04:08.342 I/OkHttpWebsocketSession(27970): Receiving (raw) message {"MessageType":"ForceKeepAlive","MessageId":"00000000000000000000000000000000","Data":60}
09-29 15:04:08.356 I/KeepAliveHelper(27970): Using a KeepAlive message delay of 30 seconds
09-29 15:04:08.365 I/OkHttpWebsocketSession(27970): Sending (raw) message {"MessageType":"KeepAlive","Data":{}}
09-29 15:04:08.372 I/OkHttpWebsocketSession(27970): Receiving (raw) message {"MessageType":"KeepAlive","MessageId":"7032bcdb0dbb4934b4294f1a976a2cbe"}
09-29 15:04:08.384 D/StartupActivity(27970): Opening next activity Intent { flg=0x10004000 cmp=org.jellyfin.androidtv/.ui.browsing.MainActivity }
09-29 15:04:08.399 D/ACRA    (27970): onActivityPaused class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:04:08.431 D/ACRA    (27970): onActivityCreated class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:08.432 I/AppThemeCallbacks(27970): Applying theme: DARK
09-29 15:04:08.467 I/BackgroundService(27970): Adding BackgroundServiceFragment to activity
09-29 15:04:08.469 D/ACRA    (27970): onActivityStarted class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:08.649 I/BackgroundService(27970): Adding BackgroundServiceFragment to activity
09-29 15:04:08.673 D/MediaManager(27970): Added event listener.  Total listeners: 1
09-29 15:04:08.817 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:04:08.862 I/art     (27970): Background sticky concurrent mark sweep GC freed 17889(834KB) AllocSpace objects, 0(0B) LOS objects, 16% free, 5MB/6MB, paused 5.994ms total 187.768ms
09-29 15:04:08.881 D/ACRA    (27970): onActivityResumed class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:08.882 I/HomeFragment(27970): Updating audio queue in HomeFragment (onResume)
09-29 15:04:08.883 D/BackgroundServiceFragme(27970): Restoring background drawable
09-29 15:04:08.884 D/BackgroundServiceFragme(27970): Restoring background drawable
09-29 15:04:08.950 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:04:08.989 W/OpenGLRenderer(27970): Points are too far apart 4.000003
09-29 15:04:09.013 I/WM-WorkerWrapper(27970): Worker result FAILURE for Work [ id=fecde868-c9ab-43c0-8e3b-30a6d8b705b2, tags={ org.jellyfin.androidtv.integration.LeanbackChannelWorker } ]
09-29 15:04:09.013 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:04:09.015 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=f137a2dd21bbc1b99aa5c0f6bf02a805&GroupItems=true&format=json
09-29 15:04:09.016 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=767bffe4f11c93ef34b805451a696a4e&GroupItems=true&format=json
09-29 15:04:09.017 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=9f2f3bc30fa09e72d898f15d41242e73&GroupItems=true&format=json
09-29 15:04:09.022 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Filters=IsResumable&ImageTypeLimit=1&Fields=PrimaryImageAspectRatio%2COverview%2CItemCounts%2CDisplayPreferencesId%2CChildCount&sortOrder=Descending&ExcludeLocationTypes=Virtual&SortBy=DatePlayed&MediaTypes=Video&EnableTotalRecordCount=false&recursive=true&Limit=50&format=json
09-29 15:04:09.088 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:04:09.126 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.157 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.170 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.181 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.198 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=9f2f3bc30fa09e72d898f15d41242e73&GroupItems=true&format=json
09-29 15:04:09.223 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Filters=IsResumable&ImageTypeLimit=1&Fields=PrimaryImageAspectRatio%2COverview%2CItemCounts%2CDisplayPreferencesId%2CChildCount&sortOrder=Descending&ExcludeLocationTypes=Virtual&SortBy=DatePlayed&MediaTypes=Video&EnableTotalRecordCount=false&recursive=true&Limit=50&format=json
09-29 15:04:09.225 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=767bffe4f11c93ef34b805451a696a4e&GroupItems=true&format=json
09-29 15:04:09.233 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.258 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.293 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.309 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.322 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.367 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=f137a2dd21bbc1b99aa5c0f6bf02a805&GroupItems=true&format=json
09-29 15:04:09.395 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.415 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.436 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.457 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.471 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.484 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.497 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.509 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.522 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:09.694 D/ACRA    (27970): onActivityStopped class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:04:09.695 D/ACRA    (27970): onActivityDestroyed class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:04:11.876 I/AutoBitrate(27970): Auto bitrate set to: 8817856
09-29 15:04:26.611 D/ItemLauncher(27970): Item selected: 0 - The Willies (Movie)
09-29 15:04:26.637 D/ACRA    (27970): onActivityPaused class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:26.680 D/ACRA    (27970): onActivityCreated class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
09-29 15:04:26.681 I/AppThemeCallbacks(27970): Applying theme: DARK
09-29 15:04:26.712 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:04:26.752 I/BackgroundService(27970): Adding BackgroundServiceFragment to activity
09-29 15:04:26.824 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/c12bf73f1a59950a8c29e9c2b9e0d9b7?format=json
09-29 15:04:26.825 D/ACRA    (27970): onActivityStarted class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
09-29 15:04:26.830 D/ACRA    (27970): onActivityResumed class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
09-29 15:04:26.832 D/BackgroundServiceFragme(27970): Restoring background drawable
09-29 15:04:26.841 D/MediaManager(27970): Added event listener.  Total listeners: 2
09-29 15:04:26.872 W/RecyclerView(27970): No adapter attached; skipping layout
09-29 15:04:26.924 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/c12bf73f1a59950a8c29e9c2b9e0d9b7?format=json
09-29 15:04:26.991 D/OpenGLRenderer(27970): endAllActiveAnimators on 0x8e3f6300 (RelativeLayout) with handle 0x8e2dc170
09-29 15:04:27.000 D/ACRA    (27970): onActivitySaveInstanceState class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:27.018 D/ACRA    (27970): onActivityStopped class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:04:27.582 D/FullDetailsActivity(27970): current time 1664489067581 last playback event time 0 last refresh time 1664489066824
09-29 15:04:38.367 I/OkHttpWebsocketSession(27970): Sending (raw) message {"MessageType":"KeepAlive","Data":{}}
09-29 15:04:38.371 I/OkHttpWebsocketSession(27970): Receiving (raw) message {"MessageType":"KeepAlive","MessageId":"44d76ea6dd7c48c980fb90984289c8ef"}
09-29 15:05:05.333 D/ACRA    (27970): onActivityPaused class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
09-29 15:05:05.355 D/ACRA    (27970): onActivityStarted class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:05:05.359 D/ACRA    (27970): onActivityResumed class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:05:05.372 D/StdRowsFragment(27970): Refresh item "The Willies"
09-29 15:05:05.373 D/jellyfin-apiclient(27970): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/c12bf73f1a59950a8c29e9c2b9e0d9b7?format=json
09-29 15:05:05.374 I/HomeFragment(27970): Updating audio queue in HomeFragment (onResume)
09-29 15:05:05.375 D/BackgroundServiceFragme(27970): Restoring active backgrounds
09-29 15:05:05.377 D/BackgroundServiceFragme(27970): Restoring background drawable
09-29 15:05:05.378 D/BackgroundServiceFragme(27970): Restoring active backgrounds
09-29 15:05:05.379 D/BackgroundServiceFragme(27970): Restoring background drawable
09-29 15:05:05.467 I/jellyfin-apiclient(27970): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/c12bf73f1a59950a8c29e9c2b9e0d9b7?format=json
09-29 15:05:05.481 E/ThemeUtils(27970): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:05:05.517 D/AndroidRuntime(27970): Shutting down VM
09-29 15:05:05.564 E/ACRA    (27970): ACRA caught a NullPointerException for org.jellyfin.androidtv
09-29 15:05:05.564 E/ACRA    (27970): java.lang.NullPointerException: this.type must not be null
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:431)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:321)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:93)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.util.ImageUtils.getPrimaryImageUrl(ImageUtils.java:125)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getPrimaryImageUrl(BaseRowItem.java:239)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getImageUrl(BaseRowItem.java:227)
09-29 15:05:05.564 E/ACRA    (27970):   at org.jellyfin.androidtv.ui.presentation.CardPresenter.onBindViewHolder(CardPresenter.java:435)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.fastRelayout(GridLayoutManager.java:2014)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2287)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9878)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.layoutChild(GridLayoutManager.java:1807)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.fastRelayout(GridLayoutManager.java:2026)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2287)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
09-29 15:05:05.564 E/ACRA    (27970):   at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
09-29 15:05:05.564 E/ACRA    (27970):   at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
09-29 15:05:05.564 E/ACRA    (27970):   at com.android.internal.policy.DecorView.onLayout(DecorView.java:742)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.View.layout(View.java:17640)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2356)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2078)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1256)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6374)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.Choreographer.doCallbacks(Choreographer.java:689)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.Choreographer.doFrame(Choreographer.java:623)
09-29 15:05:05.564 E/ACRA    (27970):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
09-29 15:05:05.564 E/ACRA    (27970):   at android.os.Handler.handleCallback(Handler.java:751)
09-29 15:05:05.564 E/ACRA    (27970):   at android.os.Handler.dispatchMessage(Handler.java:95)
09-29 15:05:05.564 E/ACRA    (27970):   at android.os.Looper.loop(Looper.java:154)
09-29 15:05:05.564 E/ACRA    (27970):   at android.app.ActivityThread.main(ActivityThread.java:6194)
09-29 15:05:05.564 E/ACRA    (27970):   at java.lang.reflect.Method.invoke(Native Method)
09-29 15:05:05.564 E/ACRA    (27970):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
09-29 15:05:05.564 E/ACRA    (27970):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)
09-29 15:05:05.569 D/ACRA    (27970): Building report
09-29 15:05:05.602 D/ACRA    (27970): Starting collectors with priority FIRST
09-29 15:05:05.611 D/ACRA    (27970): Calling collector org.acra.collector.DropBoxCollector
09-29 15:05:05.611 D/ACRA    (27970): Calling collector org.acra.collector.LogCatCollector
09-29 15:05:05.611 D/ACRA    (27970): Calling collector org.acra.collector.StacktraceCollector
09-29 15:05:05.611 D/ACRA    (27970): Collector org.acra.collector.DropBoxCollector completed
09-29 15:05:05.613 D/ACRA    (27970): Collector org.acra.collector.StacktraceCollector completed
09-29 15:05:05.629 D/ACRA    (27970): Retrieving logcat output (buffer:default)...

App information

App version: 0.14.3 (140399)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"mantis","BOOTLOADER":"unknown","BRAND":"Amazon","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"mantis","DISPLAY":"NS6280","FINGERPRINT":"Amazon\/mantis\/mantis:6.0\/NS6280\/3236N:user\/amz-p,release-keys","HARDWARE":"mt8695","HOST":"i3-ri-14-use1a-b-80","ID":"NS6280","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Amazon","MODEL":"AFTMM","PERMISSIONS_REVIEW_REQUIRED":false,"PRODUCT":"mantis","RADIO":"unknown","REQ_BATTERY_LEVEL":0.3,"SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"amz-p,release-keys","TIME":1621639613000,"TYPE":"user","UNKNOWN":"unknown","USER":"build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"NHG47K","CODENAME":"REL","INCREMENTAL":"0005067547780","PREVIEW_SDK_INT":0,"RELEASE":"7.1.2","RESOURCES_SDK_INT":25,"SDK":"25","SDK_INT":25,"SECURITY_PATCH":"2019-09-01"}}

Build config:

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

Device information

Android version: 7.1.2
Device brand: Amazon
Device product: mantis
Device model: AFTMM

Crash information

Start time: 2022-09-29T15:04:06.091-07:00
Crash time: 2022-09-29T15:05:05.750-07:00

CRASH #2 (selecting movie library from the 'My Media' row)

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

Logs

Stack Trace:

java.lang.NullPointerException: this.type must not be null
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:431)
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:321)
    at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:93)
    at org.jellyfin.androidtv.util.ImageUtils.getPrimaryImageUrl(ImageUtils.java:125)
    at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getPrimaryImageUrl(BaseRowItem.java:239)
    at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getImageUrl(BaseRowItem.java:227)
    at org.jellyfin.androidtv.ui.presentation.CardPresenter.onBindViewHolder(CardPresenter.java:435)
    at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
    at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
    at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
    at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
    at androidx.leanback.widget.GridLayoutManager$2.createItem(GridLayoutManager.java:1646)
    at androidx.leanback.widget.StaggeredGrid.appendVisibleItemToRow(StaggeredGrid.java:388)
    at androidx.leanback.widget.StaggeredGridDefault.appendVisibleItemsWithoutCache(StaggeredGridDefault.java:300)
    at androidx.leanback.widget.StaggeredGrid.appendVisibleItems(StaggeredGrid.java:281)
    at androidx.leanback.widget.Grid.appendOneColumnVisibleItems(Grid.java:389)
    at androidx.leanback.widget.GridLayoutManager.appendOneColumnVisibleItems(GridLayoutManager.java:1870)
    at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2303)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
    at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2028)
    at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:417)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
    at android.view.Choreographer.doCallbacks(Choreographer.java:689)
    at android.view.Choreographer.doFrame(Choreographer.java:620)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6194)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)

Logcat:

--------- beginning of main
09-29 15:06:02.671 D/ACRA    (28175): Report was sent by all senders
09-29 15:06:02.678 D/ACRA    (28175): Finished sending reports from SenderService
09-29 15:06:02.711 I/StartupActivity$onPermi(28211): Found a session in the session repository, waiting for the currentUser in the application class.
09-29 15:06:02.713 I/StartupActivity$onPermi(28211): CurrentUser changed to da9448d2-254a-4cb3-8c82-c9b871e1f545 while waiting for startup.
09-29 15:06:02.714 D/StartupActivity(28211): Determining next activity (action=android.intent.action.MAIN, itemId=null, itemIsUserView=false)
09-29 15:06:02.716 D/SessionRepositoryImpl(28211): Restoring session
09-29 15:06:02.722 D/SocketInstance(28211): Reconnect requested
09-29 15:06:02.722 I/SocketInstance(28211): Reconnecting
09-29 15:06:02.722 D/ReconnectHelper(28211): Notified about reconnect, attempts=1
09-29 15:06:02.722 D/SocketInstance(28211): Reconnect requested
09-29 15:06:02.723 D/SocketInstance(28211): Reconnect requested
09-29 15:06:02.724 D/SocketInstance(28211): Reconnect requested
09-29 15:06:02.724 I/KtorClient(28211): POST http://192.168.0.110:8096/Sessions/Capabilities?playableMediaTypes=Video%2CAudio&supportedCommands=DisplayMessage%2CSendString&supportsMediaControl=true&supportsSync=false&supportsPersistentIdentifier=true
09-29 15:06:02.724 D/SocketInstance(28211): Reconnect requested
09-29 15:06:02.727 I/KtorClient(28211): GET http://192.168.0.110:8096/Playback/BitrateTest?size=4000000
09-29 15:06:02.743 I/OkHttpWebsocketSession(28211): WebSocket has opened
09-29 15:06:02.744 D/ReconnectHelper(28211): Notified about connect, attempts reset
09-29 15:06:02.758 I/OkHttpWebsocketSession(28211): Receiving (raw) message {"MessageType":"ForceKeepAlive","MessageId":"00000000000000000000000000000000","Data":60}
09-29 15:06:02.762 I/KeepAliveHelper(28211): Using a KeepAlive message delay of 30 seconds
09-29 15:06:02.764 I/OkHttpWebsocketSession(28211): Sending (raw) message {"MessageType":"KeepAlive","Data":{}}
09-29 15:06:02.772 I/OkHttpWebsocketSession(28211): Receiving (raw) message {"MessageType":"KeepAlive","MessageId":"2d00705fdaed47f3a26f76f63745c7c2"}
09-29 15:06:02.777 D/SocketInstance(28211): Credential update requested
09-29 15:06:02.777 D/SocketInstance(28211): Unable to update credentials: credentials did not change
09-29 15:06:02.818 D/StartupActivity(28211): Opening next activity Intent { flg=0x10004000 cmp=org.jellyfin.androidtv/.ui.browsing.MainActivity }
09-29 15:06:02.834 D/ACRA    (28211): onActivityPaused class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:06:02.864 I/WM-WorkerWrapper(28211): Worker result FAILURE for Work [ id=909e7a96-1b93-427a-9a42-a6e2be247944, tags={ org.jellyfin.androidtv.integration.LeanbackChannelWorker } ]
09-29 15:06:02.878 D/ACRA    (28211): onActivityCreated class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:06:02.879 I/AppThemeCallbacks(28211): Applying theme: DARK
09-29 15:06:02.901 I/BackgroundService(28211): Adding BackgroundServiceFragment to activity
09-29 15:06:02.904 D/ACRA    (28211): onActivityStarted class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:06:02.944 I/BackgroundService(28211): Adding BackgroundServiceFragment to activity
09-29 15:06:02.946 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:06:02.973 D/MediaManager(28211): Added event listener.  Total listeners: 1
09-29 15:06:03.043 D/ACRA    (28211): onActivityResumed class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:06:03.044 I/HomeFragment(28211): Updating audio queue in HomeFragment (onResume)
09-29 15:06:03.045 D/BackgroundServiceFragme(28211): Restoring background drawable
09-29 15:06:03.045 D/BackgroundServiceFragme(28211): Restoring background drawable
09-29 15:06:03.052 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:06:03.128 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:06:03.130 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=f137a2dd21bbc1b99aa5c0f6bf02a805&GroupItems=true&format=json
09-29 15:06:03.131 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=767bffe4f11c93ef34b805451a696a4e&GroupItems=true&format=json
09-29 15:06:03.132 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=9f2f3bc30fa09e72d898f15d41242e73&GroupItems=true&format=json
09-29 15:06:03.134 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Filters=IsResumable&ImageTypeLimit=1&Fields=PrimaryImageAspectRatio%2COverview%2CItemCounts%2CDisplayPreferencesId%2CChildCount&sortOrder=Descending&ExcludeLocationTypes=Virtual&SortBy=DatePlayed&MediaTypes=Video&EnableTotalRecordCount=false&recursive=true&Limit=50&format=json
09-29 15:06:03.179 W/OpenGLRenderer(28211): Points are too far apart 4.000003
09-29 15:06:03.198 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Views?format=json
09-29 15:06:03.215 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.267 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.284 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.300 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.333 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=9f2f3bc30fa09e72d898f15d41242e73&GroupItems=true&format=json
09-29 15:06:03.333 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=f137a2dd21bbc1b99aa5c0f6bf02a805&GroupItems=true&format=json
09-29 15:06:03.346 I/art     (28211): Background partial concurrent mark sweep GC freed 6736(455KB) AllocSpace objects, 4(112KB) LOS objects, 38% free, 6MB/10MB, paused 8.924ms total 60.515ms
09-29 15:06:03.362 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.377 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.391 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.404 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.418 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.432 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.445 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.458 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.474 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.538 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Filters=IsResumable&ImageTypeLimit=1&Fields=PrimaryImageAspectRatio%2COverview%2CItemCounts%2CDisplayPreferencesId%2CChildCount&sortOrder=Descending&ExcludeLocationTypes=Virtual&SortBy=DatePlayed&MediaTypes=Video&EnableTotalRecordCount=false&recursive=true&Limit=50&format=json
09-29 15:06:03.542 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/Latest?Limit=50&Fields=PrimaryImageAspectRatio%2COverview%2CChildCount&ParentId=767bffe4f11c93ef34b805451a696a4e&GroupItems=true&format=json
09-29 15:06:03.553 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.579 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.613 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.637 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.653 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:03.879 D/ACRA    (28211): onActivityStopped class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:06:03.880 D/ACRA    (28211): onActivityDestroyed class org.jellyfin.androidtv.ui.startup.StartupActivity
09-29 15:06:04.237 I/AutoBitrate(28211): Auto bitrate set to: 21206096
09-29 15:06:08.801 D/ItemLauncher(28211): Item selected: 0 - Movies (CollectionFolder)
09-29 15:06:08.803 D/ItemLauncher(28211): **** Collection type: movies
09-29 15:06:08.807 I/KtorClient(28211): GET http://192.168.0.110:8096/DisplayPreferences/f137a2dd21bbc1b99aa5c0f6bf02a805?userId=da9448d2-254a-4cb3-8c82-c9b871e1f545&client=jellyfin-androidtv
09-29 15:06:08.881 D/ACRA    (28211): onActivityPaused class org.jellyfin.androidtv.ui.browsing.MainActivity
09-29 15:06:08.900 D/ACRA    (28211): onActivityCreated class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
09-29 15:06:08.901 I/AppThemeCallbacks(28211): Applying theme: DARK
09-29 15:06:08.914 D/ACRA    (28211): onActivityStarted class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
09-29 15:06:08.917 I/BackgroundService(28211): Adding BackgroundServiceFragment to activity
09-29 15:06:08.928 D/StdGridFragment(28211): numCardsScreen <0>
09-29 15:06:09.000 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:09.013 D/StdGridFragment(28211): buildAdapter cardHeight <379> getCardWidthBy <252> chunks <25> type <Items>
09-29 15:06:09.015 D/jellyfin-apiclient(28211): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
09-29 15:06:09.047 D/ACRA    (28211): onActivityResumed class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
09-29 15:06:09.048 D/BackgroundServiceFragme(28211): Restoring background drawable
09-29 15:06:09.062 D/MediaManager(28211): Added event listener.  Total listeners: 2
09-29 15:06:09.082 D/GridFragment(28211): row selected position -1
09-29 15:06:09.154 D/OpenGLRenderer(28211): endAllActiveAnimators on 0x91110600 (RelativeLayout) with handle 0x8d7fc5d0
09-29 15:06:09.164 I/jellyfin-apiclient(28211): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
09-29 15:06:09.185 E/ThemeUtils(28211): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
09-29 15:06:09.205 D/AndroidRuntime(28211): Shutting down VM
09-29 15:06:09.206 E/ACRA    (28211): ACRA caught a NullPointerException for org.jellyfin.androidtv
09-29 15:06:09.206 E/ACRA    (28211): java.lang.NullPointerException: this.type must not be null
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:431)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:321)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.util.sdk.compat.ModelCompat.asSdk(ModelCompat.kt:93)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.util.ImageUtils.getPrimaryImageUrl(ImageUtils.java:125)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getPrimaryImageUrl(BaseRowItem.java:239)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.ui.itemhandling.BaseRowItem.getImageUrl(BaseRowItem.java:227)
09-29 15:06:09.206 E/ACRA    (28211):   at org.jellyfin.androidtv.ui.presentation.CardPresenter.onBindViewHolder(CardPresenter.java:435)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.GridLayoutManager$2.createItem(GridLayoutManager.java:1646)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.StaggeredGrid.appendVisibleItemToRow(StaggeredGrid.java:388)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.StaggeredGridDefault.appendVisibleItemsWithoutCache(StaggeredGridDefault.java:300)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.StaggeredGrid.appendVisibleItems(StaggeredGrid.java:281)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.Grid.appendOneColumnVisibleItems(Grid.java:389)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.GridLayoutManager.appendOneColumnVisibleItems(GridLayoutManager.java:1870)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2303)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2028)
09-29 15:06:09.206 E/ACRA    (28211):   at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:417)
09-29 15:06:09.206 E/ACRA    (28211):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
09-29 15:06:09.206 E/ACRA    (28211):   at android.view.Choreographer.doCallbacks(Choreographer.java:689)
09-29 15:06:09.206 E/ACRA    (28211):   at android.view.Choreographer.doFrame(Choreographer.java:620)
09-29 15:06:09.206 E/ACRA    (28211):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
09-29 15:06:09.206 E/ACRA    (28211):   at android.os.Handler.handleCallback(Handler.java:751)
09-29 15:06:09.206 E/ACRA    (28211):   at android.os.Handler.dispatchMessage(Handler.java:95)
09-29 15:06:09.206 E/ACRA    (28211):   at android.os.Looper.loop(Looper.java:154)
09-29 15:06:09.206 E/ACRA    (28211):   at android.app.ActivityThread.main(ActivityThread.java:6194)
09-29 15:06:09.206 E/ACRA    (28211):   at java.lang.reflect.Method.invoke(Native Method)
09-29 15:06:09.206 E/ACRA    (28211):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
09-29 15:06:09.206 E/ACRA    (28211):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)
09-29 15:06:09.206 D/ACRA    (28211): Building report
09-29 15:06:09.207 D/ACRA    (28211): Starting collectors with priority FIRST
09-29 15:06:09.208 D/ACRA    (28211): Calling collector org.acra.collector.DropBoxCollector
09-29 15:06:09.208 D/ACRA    (28211): Collector org.acra.collector.DropBoxCollector completed
09-29 15:06:09.208 D/ACRA    (28211): Calling collector org.acra.collector.LogCatCollector
09-29 15:06:09.209 D/ACRA    (28211): Calling collector org.acra.collector.StacktraceCollector
09-29 15:06:09.210 D/ACRA    (28211): Collector org.acra.collector.StacktraceCollector completed
09-29 15:06:09.212 D/ACRA    (28211): Retrieving logcat output (buffer:default)...

App information

App version: 0.14.3 (140399)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"mantis","BOOTLOADER":"unknown","BRAND":"Amazon","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"mantis","DISPLAY":"NS6280","FINGERPRINT":"Amazon\/mantis\/mantis:6.0\/NS6280\/3236N:user\/amz-p,release-keys","HARDWARE":"mt8695","HOST":"i3-ri-14-use1a-b-80","ID":"NS6280","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Amazon","MODEL":"AFTMM","PERMISSIONS_REVIEW_REQUIRED":false,"PRODUCT":"mantis","RADIO":"unknown","REQ_BATTERY_LEVEL":0.3,"SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"amz-p,release-keys","TIME":1621639613000,"TYPE":"user","UNKNOWN":"unknown","USER":"build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"NHG47K","CODENAME":"REL","INCREMENTAL":"0005067547780","PREVIEW_SDK_INT":0,"RELEASE":"7.1.2","RESOURCES_SDK_INT":25,"SDK":"25","SDK_INT":25,"SECURITY_PATCH":"2019-09-01"}}

Build config:

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

Device information

Android version: 7.1.2
Device brand: Amazon
Device product: mantis
Device model: AFTMM

Crash information

Start time: 2022-09-29T15:06:01.373-07:00
Crash time: 2022-09-29T15:06:09.242-07:00

Application version

0.14.3

Where did you install the app from?

Sideloaded APK

Device information

Amazon Fire Stick 4k

Android version

Fire OS 6.2.8.0 / Wolf Launcher v0.1.9-Wolf

Jellyfin server version

10.8.5

darinmanica commented 1 year ago

I was about to post a very similar issue when I saw this. I've been able to reproduce a similar crash by adding a subtitles file. For example, if I add "Marley & Me (2008).eng.srt" to the movie directory, along with updated NFO file created by Tiny Media Manager, I get a very similar stack trace. I'm running Jellyfin 10.8.5 and jellyfin-androidtv 0.14.3 on an Nvidia Shield. I'm happy to post a log, if it's helpful. This issue is also being discussed at: https://www.reddit.com/r/jellyfin/comments/xomxsy/android_tv_jellyfin_crash_when_opening_movie/

thornbill commented 1 year ago

This was a result of the api changes in https://github.com/jellyfin/jellyfin/pull/8298 added in 10.8.5 being incompatible with some of the old code in the app. We're planning to get a fix out soon!

nielsvanvelzen commented 1 year ago

I have a potential fix for this issue in #2139 but I'm unable to test it. If anyone experiences this issue wants to help out you can do the following:

1) Share a file that triggers this issue, preferably max 10 seconds. (I can't accept pirated files) 2) Sideload the .apk file to your device and see if it triggers the issue. Do note that this is a development version with other changes as well and there might be other issues, try to focus on this one in particular.

APK Download: https://github.com/jellyfin/jellyfin-androidtv/suites/8606729121/artifacts/385968954 Here is a guide on how to sideload apps: https://www.xda-developers.com/how-to-sideload-apps-android-tv/. It will install a new app called "Jellyfin Debug" with an orange logo.

mikewesten commented 1 year ago

@nielsvanvelzen

8 second generic Jellyfin Preroll video, with silent AAC audio

Containing menu stream: https://user-images.githubusercontent.com/73662866/193892458-6de81fdc-4d98-4d76-ac6c-47afb65c2068.mp4

Does not contain menu stream: https://user-images.githubusercontent.com/73662866/193892796-410df37e-86c2-41fe-b4db-6cae74f5dceb.mp4

nielsvanvelzen commented 1 year ago

Thanks a lot @mikewesten! I was able to reproduce the crash and can confirm that my fix works.

Will make a new app release ASAP.

mikewesten commented 1 year ago

Thanks a lot @mikewesten! I was able to reproduce the crash and can confirm that my fix works.

Will make a new app release ASAP.

That's good.

I don't know how helpful or relevant this might be but here's the same menu-stream-containing video remuxed to an .mkv container. It completely eliminates the issue on my end.

Jellyfin Prerolls + Menu Stream.mkv.zip

nielsvanvelzen commented 1 year ago

My personal libraries are 100% MKV files and from what I could find the matroska specification doesn't have data streams. So that's why it doesn't trigger the issue with mkv files.

A new version of the app is now released and we're pushing it to Google Play and the Amazon Appstore. They need to review it and that can sometimes take a few days.

mikewesten commented 1 year ago

@nielsvanvelzen

Thank you, that was quick. I've just downloaded it and "update over'd" my v0.14.3 to v0.14.4 via sideload. Using 'Jellyfin Prerolls + Menu Stream.mp4' to test with. Crash #2 (selecting movie library from the 'My Media' row) was completely resolved. No more crash there. However, there's still a crash when selecting the problematic media item itself. What happens is the media item's details page will briefly load, followed by a crash. This behavior differs slightly from Crash #1 mentioned in the original post, where only the backdrop art loads > screen stuck indefinitely > back button/user input triggers crash

Here's the log: `--- client: Jellyfin for Android TV client_version: 0.14.4 client_repository: https://github.com/jellyfin/jellyfin-androidtv type: crash_report format: markdown

Logs

Stack Trace:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Enum.toString()' on a null object reference
    at org.jellyfin.androidtv.ui.card.MediaInfoCardView.setMediaStream(MediaInfoCardView.kt:31)
    at org.jellyfin.androidtv.ui.presentation.InfoCardPresenter$ViewHolder.setItem(InfoCardPresenter.java:22)
    at org.jellyfin.androidtv.ui.presentation.InfoCardPresenter.onBindViewHolder(InfoCardPresenter.java:42)
    at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
    at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
    at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
    at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
    at androidx.leanback.widget.GridLayoutManager$2.createItem(GridLayoutManager.java:1646)
    at androidx.leanback.widget.SingleRow.appendVisibleItems(SingleRow.java:113)
    at androidx.leanback.widget.Grid.appendVisibleItems(Grid.java:397)
    at androidx.leanback.widget.GridLayoutManager.appendVisibleItems(GridLayoutManager.java:1965)
    at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2318)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9878)
    at androidx.leanback.widget.GridLayoutManager.layoutChild(GridLayoutManager.java:1807)
    at androidx.leanback.widget.GridLayoutManager$2.addItem(GridLayoutManager.java:1729)
    at androidx.leanback.widget.SingleRow.appendVisibleItems(SingleRow.java:126)
    at androidx.leanback.widget.Grid.appendVisibleItems(Grid.java:397)
    at androidx.leanback.widget.GridLayoutManager.appendVisibleItems(GridLayoutManager.java:1965)
    at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2246)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4255)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4010)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:742)
    at android.view.View.layout(View.java:17640)
    at android.view.ViewGroup.layout(ViewGroup.java:5575)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2356)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2078)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1256)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6374)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
    at android.view.Choreographer.doCallbacks(Choreographer.java:689)
    at android.view.Choreographer.doFrame(Choreographer.java:623)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6194)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)

Logcat:

--------- beginning of main
10-04 11:59:32.654 I/art     (28538): Background partial concurrent mark sweep GC freed 1671(70KB) AllocSpace objects, 1(7MB) LOS objects, 5% free, 75MB/79MB, paused 1.755ms total 110.419ms
10-04 11:59:32.704 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:32.756 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:34.382 I/OkHttpWebsocketSession(28538): Sending (raw) message {"MessageType":"KeepAlive","Data":{}}
10-04 11:59:34.386 I/OkHttpWebsocketSession(28538): Receiving (raw) message {"MessageType":"KeepAlive","MessageId":"d8df4c32343a4cc887c9e4cbd93efc9f"}
10-04 11:59:39.276 I/art     (28538): Do full code cache collection, code=504KB, data=493KB
10-04 11:59:39.279 I/art     (28538): Starting a blocking GC JitCodeCache
10-04 11:59:39.280 I/art     (28538): After code cache collection, code=363KB, data=341KB
10-04 11:59:39.790 D/ItemLauncher(28538): Item selected: 0 - Movies (CollectionFolder)
10-04 11:59:39.791 D/ItemLauncher(28538): **** Collection type: movies
10-04 11:59:39.819 D/ACRA    (28538): onActivityPaused class org.jellyfin.androidtv.ui.browsing.MainActivity
10-04 11:59:39.852 D/ACRA    (28538): onActivityCreated class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
10-04 11:59:39.854 I/AppThemeCallbacks(28538): Applying theme: DARK
10-04 11:59:39.868 D/ACRA    (28538): onActivityStarted class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
10-04 11:59:39.874 I/BackgroundService(28538): Adding BackgroundServiceFragment to activity
10-04 11:59:39.884 D/StdGridFragment(28538): numCardsScreen <0>
10-04 11:59:39.939 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:39.945 D/StdGridFragment(28538): buildAdapter cardHeight <379> getCardWidthBy <252> chunks <25> type <Items>
10-04 11:59:39.947 D/jellyfin-apiclient(28538): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
10-04 11:59:39.961 D/ACRA    (28538): onActivityResumed class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
10-04 11:59:39.963 D/BackgroundServiceFragme(28538): Restoring background drawable
10-04 11:59:39.979 D/MediaManager(28538): Added event listener.  Total listeners: 2
10-04 11:59:40.003 D/GridFragment(28538): row selected position -1
10-04 11:59:40.060 D/OpenGLRenderer(28538): endAllActiveAnimators on 0x8ee87980 (RelativeLayout) with handle 0x8c5ffa40
10-04 11:59:40.071 D/ACRA    (28538): onActivitySaveInstanceState class org.jellyfin.androidtv.ui.browsing.MainActivity
10-04 11:59:40.079 D/ACRA    (28538): onActivityStopped class org.jellyfin.androidtv.ui.browsing.MainActivity
10-04 11:59:40.099 I/jellyfin-apiclient(28538): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
10-04 11:59:40.144 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.157 D/GridFragment(28538): row selected position 0
10-04 11:59:40.160 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.175 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.188 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.199 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.210 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.222 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.234 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.247 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.261 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.275 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.288 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.301 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:40.313 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.836 D/GridFragment(28538): row selected position 7
10-04 11:59:44.866 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.886 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.905 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.923 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.940 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.954 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:44.968 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:45.596 D/GridFragment(28538): row selected position 14
10-04 11:59:45.601 D/ItemRowAdapter(28538): Loading more items trigger pos <14> itemsLoaded <25> from total <5653> with chunkSize <25>
10-04 11:59:45.603 D/jellyfin-apiclient(28538): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&StartIndex=25&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
10-04 11:59:45.759 I/jellyfin-apiclient(28538): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items?Fields=PrimaryImageAspectRatio%2CChildCount%2CMediaSources%2CMediaStreams%2CDisplayPreferencesId&StartIndex=25&recursive=true&sortOrder=Descending&Limit=25&SortBy=DateCreated%2CSortName&IncludeItemTypes=Movie&ParentId=f137a2dd-21bb-c1b9-9aa5-c0f6bf02a805&format=json
10-04 11:59:45.788 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:45.800 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:46.236 D/GridFragment(28538): row selected position 7
10-04 11:59:46.345 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:46.364 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:46.594 D/GridFragment(28538): row selected position 0
10-04 11:59:47.318 D/GridFragment(28538): row selected position 1
10-04 11:59:47.837 D/GridFragment(28538): row selected position 0
10-04 11:59:50.136 D/ItemLauncher(28538): Item selected: 0 - Jellyfin Prerolls + Menu Stream (Movie)
10-04 11:59:50.155 D/ACRA    (28538): onActivityPaused class org.jellyfin.androidtv.ui.browsing.GenericGridActivity
10-04 11:59:50.190 D/ACRA    (28538): onActivityCreated class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
10-04 11:59:50.191 I/AppThemeCallbacks(28538): Applying theme: DARK
10-04 11:59:50.206 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.223 I/BackgroundService(28538): Adding BackgroundServiceFragment to activity
10-04 11:59:50.286 D/jellyfin-apiclient(28538): Adding request to queue: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/9f008cb009ab54e8abce841a272cbdc0?format=json
10-04 11:59:50.288 D/ACRA    (28538): onActivityStarted class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
10-04 11:59:50.300 D/ACRA    (28538): onActivityResumed class org.jellyfin.androidtv.ui.itemdetail.FullDetailsActivity
10-04 11:59:50.302 D/BackgroundServiceFragme(28538): Restoring background drawable
10-04 11:59:50.308 I/jellyfin-apiclient(28538): Response received from: http://192.168.0.110:8096/Users/da9448d2-254a-4cb3-8c82-c9b871e1f545/Items/9f008cb009ab54e8abce841a272cbdc0?format=json
10-04 11:59:50.322 D/MediaManager(28538): Added event listener.  Total listeners: 3
10-04 11:59:50.342 W/RecyclerView(28538): No adapter attached; skipping layout
10-04 11:59:50.347 E/ThemeUtils(28538): View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.353 E/ThemeUtils(28538): View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.358 E/ThemeUtils(28538): View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.360 E/ThemeUtils(28538): View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.364 E/ThemeUtils(28538): View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.366 D/FullDetailsActivity(28538): Item type: Movie
10-04 11:59:50.369 D/jellyfin-apiclient(28538): Adding request to queue: http://192.168.0.110:8096/Items/9f008cb009ab54e8abce841a272cbdc0/Similar?Limit=10&UserId=da9448d2-254a-4cb3-8c82-c9b871e1f545&Fields=PrimaryImageAspectRatio%2CChildCount&format=json
10-04 11:59:50.393 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.ExpandableTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.408 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.442 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.460 E/ThemeUtils(28538): View class org.jellyfin.androidtv.ui.AsyncImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
10-04 11:59:50.476 I/ViewTarget(28538): Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
10-04 11:59:50.477 I/ViewTarget(28538): Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
10-04 11:59:50.537 I/jellyfin-apiclient(28538): Response received from: http://192.168.0.110:8096/Items/9f008cb009ab54e8abce841a272cbdc0/Similar?Limit=10&UserId=da9448d2-254a-4cb3-8c82-c9b871e1f545&Fields=PrimaryImageAspectRatio%2CChildCount&format=json
10-04 11:59:50.573 D/AndroidRuntime(28538): Shutting down VM
10-04 11:59:50.574 E/ACRA    (28538): ACRA caught a NullPointerException for org.jellyfin.androidtv
10-04 11:59:50.574 E/ACRA    (28538): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Enum.toString()' on a null object reference
10-04 11:59:50.574 E/ACRA    (28538):   at org.jellyfin.androidtv.ui.card.MediaInfoCardView.setMediaStream(MediaInfoCardView.kt:31)
10-04 11:59:50.574 E/ACRA    (28538):   at org.jellyfin.androidtv.ui.presentation.InfoCardPresenter$ViewHolder.setItem(InfoCardPresenter.java:22)
10-04 11:59:50.574 E/ACRA    (28538):   at org.jellyfin.androidtv.ui.presentation.InfoCardPresenter.onBindViewHolder(InfoCardPresenter.java:42)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.Presenter.onBindViewHolder(Presenter.java:140)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.ItemBridgeAdapter.onBindViewHolder(ItemBridgeAdapter.java:422)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.getViewForPosition(GridLayoutManager.java:1118)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager$2.createItem(GridLayoutManager.java:1646)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.SingleRow.appendVisibleItems(SingleRow.java:113)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.Grid.appendVisibleItems(Grid.java:397)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.appendVisibleItems(GridLayoutManager.java:1965)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2318)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9878)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.layoutChild(GridLayoutManager.java:1807)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager$2.addItem(GridLayoutManager.java:1729)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.SingleRow.appendVisibleItems(SingleRow.java:126)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.Grid.appendVisibleItems(Grid.java:397)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.appendVisibleItems(GridLayoutManager.java:1965)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:2246)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4255)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4010)
10-04 11:59:50.574 E/ACRA    (28538):   at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.574 E/ACRA    (28538):   at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
10-04 11:59:50.574 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
10-04 11:59:50.575 E/ACRA    (28538):   at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
10-04 11:59:50.575 E/ACRA    (28538):   at com.android.internal.policy.DecorView.onLayout(DecorView.java:742)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.View.layout(View.java:17640)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewGroup.layout(ViewGroup.java:5575)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2356)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2078)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1256)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6374)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:878)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.Choreographer.doCallbacks(Choreographer.java:689)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.Choreographer.doFrame(Choreographer.java:623)
10-04 11:59:50.575 E/ACRA    (28538):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:864)
10-04 11:59:50.575 E/ACRA    (28538):   at android.os.Handler.handleCallback(Handler.java:751)
10-04 11:59:50.575 E/ACRA    (28538):   at android.os.Handler.dispatchMessage(Handler.java:95)
10-04 11:59:50.575 E/ACRA    (28538):   at android.os.Looper.loop(Looper.java:154)
10-04 11:59:50.575 E/ACRA    (28538):   at android.app.ActivityThread.main(ActivityThread.java:6194)
10-04 11:59:50.575 E/ACRA    (28538):   at java.lang.reflect.Method.invoke(Native Method)
10-04 11:59:50.575 E/ACRA    (28538):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
10-04 11:59:50.575 E/ACRA    (28538):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:801)
10-04 11:59:50.575 D/ACRA    (28538): Building report
10-04 11:59:50.576 D/ACRA    (28538): Starting collectors with priority FIRST
10-04 11:59:50.577 D/ACRA    (28538): Calling collector org.acra.collector.DropBoxCollector
10-04 11:59:50.577 D/ACRA    (28538): Collector org.acra.collector.DropBoxCollector completed
10-04 11:59:50.578 D/ACRA    (28538): Calling collector org.acra.collector.LogCatCollector
10-04 11:59:50.578 D/ACRA    (28538): Calling collector org.acra.collector.StacktraceCollector
10-04 11:59:50.579 D/ACRA    (28538): Collector org.acra.collector.StacktraceCollector completed
10-04 11:59:50.582 D/ACRA    (28538): Retrieving logcat output (buffer:default)...

App information

App version: 0.14.4 (140499)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"mantis","BOOTLOADER":"unknown","BRAND":"Amazon","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"mantis","DISPLAY":"NS6280","FINGERPRINT":"Amazon\/mantis\/mantis:6.0\/NS6280\/3236N:user\/amz-p,release-keys","HARDWARE":"mt8695","HOST":"i3-ri-14-use1a-b-80","ID":"NS6280","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Amazon","MODEL":"AFTMM","PERMISSIONS_REVIEW_REQUIRED":false,"PRODUCT":"mantis","RADIO":"unknown","REQ_BATTERY_LEVEL":0.3,"SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"amz-p,release-keys","TIME":1621639613000,"TYPE":"user","UNKNOWN":"unknown","USER":"build","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"NHG47K","CODENAME":"REL","INCREMENTAL":"0005067547780","PREVIEW_SDK_INT":0,"RELEASE":"7.1.2","RESOURCES_SDK_INT":25,"SDK":"25","SDK_INT":25,"SECURITY_PATCH":"2019-09-01"}}

Build config:

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

Device information

Android version: 7.1.2
Device brand: Amazon
Device product: mantis
Device model: AFTMM

Crash information

Start time: 2022-10-04T11:59:03.624-07:00
Crash time: `2022-10-04T11:59:50.634-07:00``

nielsvanvelzen commented 1 year ago

Looks like that issue only happens in the current 0.14 branch. A workaround should be to disable debugging options in the advanced preferences. I'm looking into a proper fix now.

nielsvanvelzen commented 1 year ago

New build is running now (reused the same version) with a fix. When testing I did it on our master branch which includes all the changes for the next 0.15 version where the issue did not happen. I've backported a change from some time ago (#1997) to fix in in 0.14 too.

mikewesten commented 1 year ago

To follow up... I just tested a legitimate movie media item (the same movie from the mediainfo in the original post above). The crashes are completely resolved.

As for the test sample video ''Jellyfin Prerolls + Menu Stream.mp4' still being subject to a crash... Once I (falsely) identify + match it to any random movie, allowing it to retrieve and populate some movie metadata, it's crash no longer occurs. So if there's a variable condition at play here for this particular video test sample's crash, it may have something to do with that (lack of identifying match or movie metadata).

Edit: Or if I put that video test sample into a 'Photos' library, that also works. No crashes there.

Issue resolved as far as I'm corncerned. Upwards and onwards. 👍