Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
mikewesten opened this issue Sep 29, 2022 · 11 comments · Fixed by #2139
Closed

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

mikewesten opened this issue Sep 29, 2022 · 11 comments · Fixed by #2139
Labels
bug Something isn't working confirmed Issue can be reproduced crash Bug causing app crashes sdk-migration To fix this we need to migrate some code to the new SDK

Comments

@mikewesten
Copy link

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

@mikewesten mikewesten added the bug Something isn't working label Sep 29, 2022
@mikewesten mikewesten changed the title Crash caused by recently added media if .mp4 video files have embedded chapters Crash results from recently added media if .mp4 video files have embedded chapters Sep 29, 2022
@darinmanica
Copy link

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
Copy link
Member

This was a result of the api changes in jellyfin/jellyfin#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
Copy link
Member

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.

@nielsvanvelzen nielsvanvelzen pinned this issue Oct 4, 2022
@mikewesten
Copy link
Author

@nielsvanvelzen
Copy link
Member

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
Copy link
Author

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
Copy link
Member

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
Copy link
Author

@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
Copy link
Member

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
Copy link
Member

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
Copy link
Author

mikewesten commented Oct 4, 2022

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. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working confirmed Issue can be reproduced crash Bug causing app crashes sdk-migration To fix this we need to migrate some code to the new SDK
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants