Skip to content

Null pointer crash on chaning stream quality and seek forward #4899

@keshavmahawar

Description

@keshavmahawar

This issue respects the following points:

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

Describe the bug

  1. when watching a movie
  2. change stream quality
  3. app crash
  4. sometime crash on seek forward as well on android tv
    happening quite frequently

Logs


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

Logs

Stack Trace:

java.lang.NullPointerException: Attempt to invoke virtual method 'org.jellyfin.apiclient.model.session.PlayMethod org.jellyfin.androidtv.data.compat.StreamInfo.getPlayMethod()' on a null object reference
	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1123)
	at org.jellyfin.androidtv.ui.playback.VideoManager$2.onIsPlayingChanged(VideoManager.java:127)
	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$updatePlaybackInfo$26(ExoPlayerImpl.java:2131)
	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda26.invoke(D8$$SyntheticClass:0)
	at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:342)
	at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:226)
	at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
	at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:248)
	at androidx.media3.exoplayer.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:2139)
	at androidx.media3.exoplayer.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1973)
	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$1$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:347)
	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda12.run(D8$$SyntheticClass:0)
	at android.os.Handler.handleCallback(Handler.java:958)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:205)
	at android.os.Looper.loop(Looper.java:294)
	at android.app.ActivityThread.main(ActivityThread.java:8177)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974)

Logcat:

09-03 22:37:03.533 D/jellyfin-apiclient(10045): Adding request to queue: server/c3098319-2fb8-8237-9128-bdf45cae0df1/PlaybackInfo?format=json
09-03 22:37:03.618 D/TrafficStats(10045): tagSocket(265) with statsTag=0x582bd4ab, statsUid=-1
09-03 22:37:03.870 W/WindowOnBackDispatcher(10045): sendCancelIfRunning: isInProgress=falsecallback=android.view.ViewRootImpl$$ExternalSyntheticLambda11@cb9e7d5
09-03 22:37:03.880 D/OpenGLRenderer(10045): endAllActiveAnimators on 0xb6fe3130 (RippleDrawable) with handle 0xb7973870
09-03 22:37:03.881 D/OpenGLRenderer(10045): endAllActiveAnimators on 0xb6fc7db0 (MenuPopupWindow$MenuDropDownListView) with handle 0xb795e7b0
09-03 22:37:04.720 D/BufferPoolAccessor2.0(10045): bufferpool2 0xb73e69c8 : 5(40960 size) total buffers - 4(32768 size) used buffers - 357/383 (recycle/alloc) - 43/379 (fetch/transfer)
09-03 22:37:04.720 D/BufferPoolAccessor2.0(10045): evictor expired: 1, evicted: 1
09-03 22:37:05.050 D/CCodecConfig(10045): c2 config diff is     00000000:  b5 00 3c 00 01 04 01 40  00 0f a0 57 b0 29 ec 17  ..<[email protected].)..
09-03 22:37:05.050 D/CCodecConfig(10045):     00000010:  8d 00 10 e4 08 00 00 28  9a 9c 50 01 8c c8 00 05  .......(..P.....
09-03 22:37:05.050 D/CCodecConfig(10045):     00000020:  90 00 1e 58 00 86 d0 02  1a f8 04 7f 18 9c 14 00  ...X............
09-03 22:37:05.050 D/CCodecConfig(10045):     00000030:  40 98 13 24 bb 63 64 fc  3f 41 d8 77 fe 67 ab 00  @..$.cd.?A.w.g..
09-03 22:37:05.051 D/CCodecBuffers(10045): [c2.amlogic.hevc.decoder#503:2D-Output] popFromStashAndRegister: at 1000016016000us, output format changed to AMessage(what = 0x00000000) = {
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t android._video-scaling = 1
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t android._dataspace = 281411584
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t color-standard = 6
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t color-range = 2
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t color-transfer = 3
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t sar-height = 1
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t rotation-degrees = 0
09-03 22:37:05.051 D/CCodecBuffers(10045):   Buffer hdr-static-info = {
09-03 22:37:05.051 D/CCodecBuffers(10045):     00000000:  00 d0 84 80 3e c2 33 c4  86 4c 1d b8 0b 13 3d 42  ....>.3..L....=B
09-03 22:37:05.051 D/CCodecBuffers(10045):     00000010:  40 a0 0f 32 00 ee 03 c0  00                       @..2.....
09-03 22:37:05.051 D/CCodecBuffers(10045):   }
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t sar-width = 1
09-03 22:37:05.051 D/CCodecBuffers(10045):   Rect crop(0, 0, 3839, 1603)
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t width = 3840
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t frame-rate = 30
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t height = 1604
09-03 22:37:05.051 D/CCodecBuffers(10045):   string mime = "video/raw"
09-03 22:37:05.051 D/CCodecBuffers(10045):   Buffer output.hdr-dynamic-info.data = {
09-03 22:37:05.051 D/CCodecBuffers(10045):   }
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t output.hdr-dynamic-info.type = 0
09-03 22:37:05.051 D/CCodecBuffers(10045):   int32_t color-format = 2130708361
09-03 22:37:05.051 D/CCodecBuffers(10045):   Buffer hdr10-plus-info = {
09-03 22:37:05.051 D/CCodecBuffers(10045):     00000000:  b5 00 3c 00 01 04 01 40  00 0f a0 57 b0 29 ec 17  ..<[email protected].)..
09-03 22:37:05.051 D/CCodecBuffers(10045):     00000010:  8d 00 10 e4 08 00 00 28  9a 9c 50 01 8c c8 00 05  .......(..P.....
09-03 22:37:05.670 V/io.ktor.client.plugins.HttpCallValidator(10045): Validating response for request http://server:8096/Sessions/Playing/Stopped
09-03 22:37:05.670 V/io.ktor.client.plugins.DefaultResponseValidation(10045): Skipping default response validation for http://server:8096/Sessions/Playing/Stopped
09-03 22:37:05.671 V/io.ktor.client.plugins.defaultTransformers(10045): Transformed with default transformers response body for http://server:8096/Sessions/Playing/Stopped to interface io.ktor.utils.io.ByteReadChannel (Kotlin reflection is not available)
09-03 22:37:06.324 D/org.jellyfin.sdk.api.sockets.OkHttpSocketConnection(10045): Receiving (raw) message {"MessageId":"881c99fab66f4f2ca4254ede924aac81","Data":{"UserId":"d061c1377b4a4f19b55aab93ead3c340","UserDataList":[{"PlaybackPositionTicks":0,"PlayCount":25,"IsFavorite":false,"LastPlayedDate":"2025-09-03T17:05:38.5165924Z","Played":false,"Key":"1234821","ItemId":"c30983192fb882379128bdf45cae0df1"},{"UnplayedItemCount":9,"PlaybackPositionTicks":0,"PlayCount":0,"IsFavorite":false,"Played":false,"Key":"ba9c5cad-4ccd-8753-66bf-54fd50e04928","ItemId":"ba9c5cad4ccd875366bf54fd50e04928"}]},"MessageType":"UserDataChanged"}
09-03 22:37:10.721 D/BufferPoolAccessor2.0(10045): bufferpool2 0xb73e69c8 : 5(40960 size) total buffers - 0(0 size) used buffers - 365/392 (recycle/alloc) - 46/392 (fetch/transfer)
09-03 22:37:10.721 D/BufferPoolAccessor2.0(10045): bufferpool2 0xb73e95a8 : 9(56623104 size) total buffers - 8(50331648 size) used buffers - 386/400 (recycle/alloc) - 58/400 (fetch/transfer)
09-03 22:37:10.721 D/BufferPoolAccessor2.0(10045): evictor expired: 2, evicted: 2
09-03 22:37:12.227 D/AudioTrack(10045): getTimestamp_l(260): device stall time corrected using current time 140960424899922
09-03 22:37:12.240 D/AndroidRuntime(10045): Shutting down VM
--------- beginning of crash
09-03 22:37:12.244 E/AndroidRuntime(10045): FATAL EXCEPTION: main
09-03 22:37:12.244 E/AndroidRuntime(10045): Process: org.jellyfin.androidtv, PID: 10045
09-03 22:37:12.244 E/AndroidRuntime(10045): java.lang.NullPointerException: Attempt to invoke virtual method 'org.jellyfin.apiclient.model.session.PlayMethod org.jellyfin.androidtv.data.compat.StreamInfo.getPlayMethod()' on a null object reference
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1123)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at org.jellyfin.androidtv.ui.playback.VideoManager$2.onIsPlayingChanged(VideoManager.java:127)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$updatePlaybackInfo$26(ExoPlayerImpl.java:2131)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda26.invoke(D8$$SyntheticClass:0)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:342)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:226)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:248)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:2139)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1973)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$1$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:347)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda12.run(D8$$SyntheticClass:0)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at android.os.Handler.handleCallback(Handler.java:958)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at android.os.Handler.dispatchMessage(Handler.java:99)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at android.os.Looper.loopOnce(Looper.java:205)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at android.os.Looper.loop(Looper.java:294)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at android.app.ActivityThread.main(ActivityThread.java:8177)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at java.lang.reflect.Method.invoke(Native Method)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
09-03 22:37:12.244 E/AndroidRuntime(10045): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974)
09-03 22:37:12.252 E/ACRA    (10045): ACRA caught a NullPointerException for org.jellyfin.androidtv
09-03 22:37:12.252 E/ACRA    (10045): java.lang.NullPointerException: Attempt to invoke virtual method 'org.jellyfin.apiclient.model.session.PlayMethod org.jellyfin.androidtv.data.compat.StreamInfo.getPlayMethod()' on a null object reference
09-03 22:37:12.252 E/ACRA    (10045): 	at org.jellyfin.androidtv.ui.playback.PlaybackController.onPrepared(PlaybackController.java:1123)
09-03 22:37:12.252 E/ACRA    (10045): 	at org.jellyfin.androidtv.ui.playback.VideoManager$2.onIsPlayingChanged(VideoManager.java:127)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$updatePlaybackInfo$26(ExoPlayerImpl.java:2131)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda26.invoke(D8$$SyntheticClass:0)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:342)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:226)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:248)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:2139)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1973)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$1$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:347)
09-03 22:37:12.252 E/ACRA    (10045): 	at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda12.run(D8$$SyntheticClass:0)
09-03 22:37:12.252 E/ACRA    (10045): 	at android.os.Handler.handleCallback(Handler.java:958)
09-03 22:37:12.252 E/ACRA    (10045): 	at android.os.Handler.dispatchMessage(Handler.java:99)
09-03 22:37:12.252 E/ACRA    (10045): 	at android.os.Looper.loopOnce(Looper.java:205)
09-03 22:37:12.252 E/ACRA    (10045): 	at android.os.Looper.loop(Looper.java:294)
09-03 22:37:12.252 E/ACRA    (10045): 	at android.app.ActivityThread.main(ActivityThread.java:8177)
09-03 22:37:12.252 E/ACRA    (10045): 	at java.lang.reflect.Method.invoke(Native Method)
09-03 22:37:12.252 E/ACRA    (10045): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
09-03 22:37:12.252 E/ACRA    (10045): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974)
09-03 22:37:12.254 D/ACRA    (10045): Building report
09-03 22:37:12.260 D/ACRA    (10045): Starting collectors with priority FIRST
09-03 22:37:12.267 D/ACRA    (10045): Calling collector org.acra.collector.DropBoxCollector
09-03 22:37:12.267 D/ACRA    (10045): Collector org.acra.collector.DropBoxCollector completed
09-03 22:37:12.269 D/ACRA    (10045): Calling collector org.acra.collector.StacktraceCollector
09-03 22:37:12.271 D/ACRA    (10045): Calling collector org.acra.collector.LogCatCollector
09-03 22:37:12.273 D/ACRA    (10045): Collector org.acra.collector.StacktraceCollector completed
09-03 22:37:12.286 D/ACRA    (10045): Retrieving logcat output (buffer:default)...

App information

App version: 0.18.11 (181199)
Package name: org.jellyfin.androidtv
Build:

{"BOARD":"UIW4078ATL","BOOTLOADER":"UBoot-vantiva-14.0.3p-69484d08909-aml-bl-3.5.10-2023.01-250410.191942","BRAND":"Airtel-Xstream","CPU_ABI":"armeabi-v7a","CPU_ABI2":"armeabi","DEVICE":"UIW4078ATL","DISPLAY":"UKG3.241009.001.14.15.35-250410","FINGERPRINT":"Airtel-Xstream\/XstreamIPTV1_VT\/UIW4078ATL:14\/UKG3.241009.001\/14.15.35-250410:user\/release-keys","HARDWARE":"amlogic","HOST":"d12c0214335f","ID":"UKG3.241009.001","IS_DEBUGGABLE":false,"IS_EMULATOR":false,"MANUFACTURER":"Vantiva","MODEL":"XstreamIPTV1-VT","ODM_SKU":"unknown","PERMISSIONS_REVIEW_REQUIRED":true,"PRODUCT":"XstreamIPTV1_VT","RADIO":"unknown","SKU":"unknown","SOC_MANUFACTURER":"Amlogic","SOC_MODEL":"AMLS905Y5","SUPPORTED_32_BIT_ABIS":["armeabi-v7a","armeabi"],"SUPPORTED_64_BIT_ABIS":[],"SUPPORTED_ABIS":["armeabi-v7a","armeabi"],"TAGS":"release-keys","TIME":1744305528000,"TYPE":"user","UNKNOWN":"unknown","USER":"jenkins","VERSION":{"ACTIVE_CODENAMES":[],"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"14.15.35-250410","KNOWN_CODENAMES":"{HoneycombMr1, HoneycombMr2, Lollipop, Kitkat, Tiramisu, Gingerbread, Cupcake, IceCreamSandwichMr1, JellyBean, IceCreamSandwich, LollipopMr1, M, N, O, P, Q, R, S, Sv2, Base, NMr1, OMr1, JellyBeanMr1, JellyBeanMr2, Donut, Froyo, GingerbreadMr1, EclairMr1, UpsideDownCake, Honeycomb, Eclair01, KitkatWatch, Base11, Eclair}","MEDIA_PERFORMANCE_CLASS":0,"PREVIEW_SDK_FINGERPRINT":"REL","PREVIEW_SDK_INT":0,"RELEASE":"14","RELEASE_OR_CODENAME":"14","RELEASE_OR_PREVIEW_DISPLAY":"14","SDK":"34","SDK_INT":34,"SECURITY_PATCH":"2025-02-01"}}

Build config:

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

Device information

Android version: 14
Device brand: Airtel-Xstream
Device product: XstreamIPTV1_VT
Device model: XstreamIPTV1-VT

Crash information

Start time: 2025-09-03T22:35:26.031+05:30
Crash time: 2025-09-03T22:37:12.565+05:30

Application version

0.18.11

Where did you install the app from?

Google Play Store

Device information

Airtel tv xtream box

Android version

not sure

Jellyfin server version

10.10.7

Other sources

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions