if the Sonos app is running in the background any attempt to play media with ExoPlayer results in the app crashing after about 2 seconds. i can't seem to repro this with anything other than Sonos but im certain Sonos is the culprit because if I force stop the app jellyfin no longer crashes
ill be honest its hard to know what subset of the thousands of lines of logs were relevant lol... so if you need more from before/after this just lmk
04-08 10:19:18.902 2335 2407 D MediaResumeListener: Checking for service component for org.jellyfin.mobile
04-08 10:19:18.905 2335 2407 D MediaResumeListener: Testing if we can connect to ComponentInfo{org.jellyfin.mobile/org.jellyfin.mobile.player.audio.MediaService}
04-08 10:19:18.910 1513 2295 D BackgroundInstallControlService: Package event received: 0
04-08 10:19:18.919 4395 4395 W MediaSessionCompat: Couldn't find a unique registered media button receiver in the given context.
04-08 10:19:18.919 1513 2934 I MR2ServiceImpl: getDeviceSuggestionsWithManagerLocked | manager: 10
04-08 10:19:18.920 1513 2934 I MediaSessionStack: addSession to bottom of stack | record: org.jellyfin.mobile/MediaService/127 (userId=0)
04-08 10:19:18.929 1513 2934 D MediaSessionService: onSessionActiveStateChanged: record=org.jellyfin.mobile/MediaService/127 (userId=0) active=true
04-08 10:19:18.930 2335 2885 D vol.VolumeDialogControl: onRemoteUpdate: stream: 29249146 volume: 48
04-08 10:19:18.935 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.935 2335 2885 D vol.VolumeDialogControl: onRemoteUpdate: stream: 29249146 volume: 48
04-08 10:19:18.936 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.938 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.941 2469 2469 I MediaPlayerList: sendMediaUpdate: Creating a one item queue for a player with no queue
04-08 10:19:18.943 4395 4395 I ExoPlayerImpl: Init 5805665 [ExoPlayerLib/2.19.1] [tokay, Pixel 9, Google, 36]
04-08 10:19:18.944 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.944 2335 2885 D vol.VolumeDialogControl: onRemoteUpdate: stream: 29249146 volume: 48
04-08 10:19:18.944 2469 2469 W MediaControlGattService: Feature PLAYER_NAME support: true
04-08 10:19:18.944 2469 2469 W MediaControlGattService: Feature MEDIA_STATE support: true
04-08 10:19:18.946 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.950 1513 2199 D MediaSessionService: onSessionPlaybackStateChanged: record=org.jellyfin.mobile/MediaService/127 (userId=0) playbackState=PlaybackState {state=NONE(0), position=0, buffered position=0, speed=0.0, updated=172613187, actions=2359815, custom actions=[], active item id=-1, error=null}
04-08 10:19:18.950 2335 2885 D vol.VolumeDialogControl: onRemoteUpdate: stream: 29249146 volume: 48
04-08 10:19:18.950 1513 2285 D MediaSessionService: setFgsIfSessionIsLinkedToNotification: record=org.jellyfin.mobile/MediaService/127 (userId=0)
04-08 10:19:18.950 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.951 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.952 1513 2800 D MediaSessionService: onSessionPlaybackStateChanged: record=org.jellyfin.mobile/MediaService/127 (userId=0) playbackState=PlaybackState {state=NONE(0), position=0, buffered position=0, speed=0.0, updated=172613189, actions=2477575, custom actions=[], active item id=-1, error=null}
04-08 10:19:18.952 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.953 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.954 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.954 2335 2407 I InfoMediaManager: dispatchDeviceListAdded()
04-08 10:19:18.956 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.956 1513 2938 D MediaSessionService: onSessionPlaybackStateChanged: record=org.jellyfin.mobile/MediaService/127 (userId=0) playbackState=PlaybackState {state=NONE(0), position=0, buffered position=0, speed=0.0, updated=172613194, actions=2477575, custom actions=[], active item id=-1, error=null}
04-08 10:19:18.957 4859 4859 I Dtdi : (REDACTED) [MediaControllerFilter] packageName=%s resolved=%s
04-08 10:19:18.959 1513 3220 I MR2ServiceImpl: setDiscoveryRequestWithRouter2 | router: org.jellyfin.mobile(id: 43), discovery request: RouteDiscoveryRequest{ preferredFeatures={com.google.android.gms.cast.CATEGORY_CAST/F007D354///ALLOW_IPV6, android.media.route.feature.REMOTE_PLAYBACK, android.media.route.feature.LIVE_AUDIO}, activeScan=false }
04-08 10:19:18.959 4395 4395 W MR2 : [local] registerTransferCallback: Ignoring the same callback
04-08 10:19:18.959 4395 4395 W MR2 : [local] registerControllerCallback: Ignoring the same callback
04-08 10:19:18.960 2469 2469 I MediaPlayerList: sendMediaUpdate: Creating a one item queue for a player with no queue
04-08 10:19:18.960 2335 5098 I RouterInfoMediaManager: onPreferredFeaturesChanged(): [com.google.android.gms.cast.CATEGORY_CAST/F007D354///ALLOW_IPV6,android.media.route.feature.REMOTE_PLAYBACK,android.media.route.feature.LIVE_AUDIO]
04-08 10:19:18.960 4395 4395 W MR2Provider: Cannot find the original route Id. route=MediaRoute2Info{ id=com.sonos.acr2/com.sonos.passport.media3.SonosMediaRoute2ProviderService:6933aee4-7d7c-338a-9b38-7840e04188ba, name=amelia's room, type=UNKNOWN(0), routingTypes=REMOTE, isSystem=false, features=[android.media.route.feature.REMOTE_PLAYBACK], iconUri=null, description=null, connectionState=0, clientPackageName=com.sonos.acr2, volume(current=48, max=100, handling=VARIABLE(1)), address=null, deduplicationIds=, providerId=com.sonos.acr2/com.sonos.passport.media3.SonosMediaRoute2ProviderService, isVisibilityRestricted=false, allowedPackages=, alsoAllowPrivilegedPackages=false, mRequiredPermissions=(), suitabilityStatus=0 }
04-08 10:19:18.960 4395 4395 D AndroidRuntime: Shutting down VM
04-08 10:19:18.961 4395 4395 E AndroidRuntime: FATAL EXCEPTION: main
04-08 10:19:18.961 4395 4395 E AndroidRuntime: Process: org.jellyfin.mobile, PID: 4395
04-08 10:19:18.961 4395 4395 E AndroidRuntime: java.lang.IllegalArgumentException: route must not be null
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at M1.n.i(SourceFile:226)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at M1.l.onRoutesUpdated(SourceFile:12)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.media.MediaRouter2.lambda$notifyRoutesUpdated$5(MediaRouter2.java:1779)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.media.MediaRouter2$$ExternalSyntheticLambda6.run(D8$$SyntheticClass:0)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:1095)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.os.Handler.dispatchMessageImpl(Handler.java:135)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:125)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:269)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.os.Looper.loop(Looper.java:367)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:9333)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
04-08 10:19:18.961 4395 4395 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
04-08 10:19:18.961 2469 2469 I bluetooth: system/btif/avrcp/avrcp_service.cc:533 SendMediaUpdate: track_changed=false : play_state=true : queue=false
04-08 10:19:18.961 2335 2407 D MediaDeviceManager: Can not get LocalBluetoothLeBroadcast
04-08 10:19:18.962 1513 2286 I MR2ServiceImpl: Updating composite discovery preference | preference: RouteDiscoveryRequest{ preferredFeatures={com.google.android.gms.cast.CATEGORY_CAST/F007D354///ALLOW_IPV6, android.media.route.feature.REMOTE_PLAYBACK, android.media.route.feature.LIVE_AUDIO}, activeScan=false }, active routers: []
04-08 10:19:18.965 4859 4859 W DiscoveryManager: BroadcastReceiver is already registered
04-08 10:19:18.966 1513 5108 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
04-08 10:19:18.966 2469 2469 I MediaPlayerList: sendMediaUpdate: Creating a one item queue for a player with no queue
04-08 10:19:18.966 2469 2469 W MediaControlGattService: Feature PLAYER_NAME support: true
04-08 10:19:18.966 2469 2469 W MediaControlGattService: Feature MEDIA_STATE support: true
04-08 10:19:18.967 4859 4392 I DiscoveryManager: Discovery state (DiscoveryState{filterCriteria=[F007D354, CC1AD845, %urn:x-cast:com.google.cast.media, CFE7FEDA], categoryToCriteria={com.google.android.gms.cast.CATEGORY_CAST//urn:x-cast:com.google.cast.media//ALLOW_IPV6=[%urn:x-cast:com.google.cast.media], com.google.android.gms.cast.CATEGORY_CAST/CFE7FEDA/urn:x-cast:com.google.cast.media//ALLOW_IPV6=[CFE7FEDA, %urn:x-cast:com.google.cast.media], com.google.android.gms.cast.CATEGORY_CAST/F007D354///ALLOW_IPV6=[F007D354], android.media.intent.category.REMOTE_PLAYBACK=[CC1AD845]}, activeScan=false, activeScanWithScreenOff=false, discoveryRequestSupportsDynamicSession=false})
04-08 10:19:18.969 1513 2934 W ActivityTaskManager: Force finishing activity org.jellyfin.mobile/.MainActivity
04-08 10:19:18.969 1513 2934 W TransitionChain: Combining AR.finish-force-crash into #1040(CLOSE|R|0x10) from finishTopCrash
04-08 10:19:18.970 2469 2469 I MediaPlayerList: sendMediaUpdate: Creating a one item queue for a player with no queue
04-08 10:19:18.971 2335 2366 V WindowManagerShell: Transition requested (#1040): android.os.BinderProxy@d6aaa3 TransitionRequestInfo { type = CLOSE, triggerTask = TaskInfo{userId=0 taskId=20261 effectiveUid=10290 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 pkg=org.jellyfin.mobile cmp=org.jellyfin.mobile/.MainActivity } baseActivity=ComponentInfo{org.jellyfin.mobile/org.jellyfin.mobile.MainActivity} topActivity=ComponentInfo{org.jellyfin.mobile/org.jellyfin.mobile.MainActivity} origActivity=null realActivity=ComponentInfo{org.jellyfin.mobile/org.jellyfin.mobile.MainActivity} realActivityIsAppLockEnabled=false numActivities=1 lastActiveTime=172606291 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.os.BinderProxy@b31072} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 0 - 0, 0) topActivityInfo=ActivityInfo{7681a0 org.jellyfin.mobile.MainActivity} launchCookies=[android.os.BinderProxy@c64c4fc] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=true isVisibleRequested=true isTopActivityNoDisplay=false isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=false isActivityStackTransparent=false lastNonFullscreenBounds=null leafTaskBoundsFromOptions= false capturedLink=null capturedLinkTimestamp=0 requestedVisibleTypes=496 topActivityRequestOpenInBrowserEducationTimestamp=0 appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false isLeafTask= true eligibleForLetterboxEducation= false isLetterboxEducationEnabled= false isLetterboxDoubleTapEnabled= false eligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 topActivityAppBounds=Rect(173, 0 - 2424, 1017) isUserFullscreenOverrideEnabled=false isSystemFullscreenOverrideEnabled=false hasMinAspectRatioOverride=false topActivityLetterboxBounds=null topNonResizableActivityAspectRatio=-1.0} topActivityMainWindowFrame=null isAppBubble=false}, pipChange = null, remoteTransitionInfo = null, displayChange = null, requestedLocation = null, userChange = null, windowingLayerChange = null, fullscreenRequestChange = null, flags = 16, debugId = 1040 }
04-08 10:19:18.971 2335 2366 W DisplayDisconnectTransitionHandler: No disconnect change found in the transition, not handling request.
04-08 10:19:18.971 2335 2366 V ShellDesktopMode: DesktopTasksController: skipping handleRequest reason=triggerTask's display doesn't support desktop mode
04-08 10:19:18.975 4395 4395 I Process : Sending signal. PID: 4395 SIG: 9
04-08 10:19:18.984 2335 5098 I InfoMediaManager: dispatchDeviceListAdded()
04-08 10:19:18.986 4859 4392 W DatabaseProcessor: processLocalDevices: failed to get the network info with non-null networkId.
04-08 10:19:18.987 4859 4859 I CastMediaRouteProvider: Published 3 routes
04-08 10:19:18.988 2335 2407 D MediaDeviceManager: Can not get LocalBluetoothLeBroadcast
04-08 10:19:18.996 29100 29100 V MR2 : [local] Transferring to route: MediaRoute2Info{ id=com.sonos.acr2/com.sonos.passport.media3.SonosMediaRoute2ProviderService:6933aee4-7d7c-338a-9b38-7840e04188ba, name=amelia's room, type=UNKNOWN(0), routingTypes=REMOTE, isSystem=false, features=[android.media.route.feature.REMOTE_PLAYBACK], iconUri=null, description=null, connectionState=0, clientPackageName=com.sonos.acr2, volume(current=48, max=100, handling=VARIABLE(1)), address=null, deduplicationIds=, providerId=com.sonos.acr2/com.sonos.passport.media3.SonosMediaRoute2ProviderService, isVisibilityRestricted=false, allowedPackages=, alsoAllowPrivilegedPackages=false, mRequiredPermissions=(), suitabilityStatus=0 }
04-08 10:19:18.997 1513 2800 I MR2ServiceImpl: transferToRouteWithRouter2 | router: com.sonos.acr2(id: 40), route: com.sonos.acr2/com.sonos.passport.media3.SonosMediaRoute2ProviderService:6933aee4-7d7c-338a-9b38-7840e04188ba
This issue respects the following points:
Describe the bug
if the Sonos app is running in the background any attempt to play media with ExoPlayer results in the app crashing after about 2 seconds. i can't seem to repro this with anything other than Sonos but im certain Sonos is the culprit because if I force stop the app jellyfin no longer crashes
if I already have the player open and then I open the Sonos app it doesn't crash. but if I then exit out of the player and open it back up it crashes like usual
demo video here: https://youtube.com/shorts/sMHxhGewmZU
(the file was too big to upload here)
Media info of the file
this applies to all files of all formats
Which video player implementations does this bug apply to?
Client logs
ill be honest its hard to know what subset of the thousands of lines of logs were relevant lol... so if you need more from before/after this just lmk
FFmpeg logs
Application version
2.6.3
Where did you install the app from?
Google Play Store
Device information
Google Pixel 9
Android version
Android 16
Jellyfin server version
10.11.8
Other sources
No response