1.10.1 PackageValidator crash with UID -1
I maintainer di solito rispondono entro 4 giorni
@tonihei ci sta già lavorando.
Dal 19/6/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Version
Media3 1.10.1
More version details
No response
Devices that reproduce the issue
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps
We don't know how to reproduce it ourselves, but it's likely related to bluetooth devices and tapping play while the app has been killed or garbage collected?
Background context:
We're using our own implementation of the PackageValidator from the UAMP project, with our onGetSession being overridden like this:
override fun onGetSession(controllerInfo: ControllerInfo): MediaLibrarySession? {
return if ("android.media.session.MediaController" == controllerInfo.packageName
|| packageValidator.isKnownCaller(controllerInfo.packageName, controllerInfo.uid)
) {
mediaSession
} else null
}
Expected result
No crash
Actual result
Crash 1:
We're getting the following crashes after updating from 1.9.3 to 1.10.1:
Fatal Exception: java.lang.RuntimeException: Unable to start service com.app.media.AudioService@27c9a28 with Intent { act=android.intent.action.MEDIA_BUTTON dat=androidx://media3.session/... cmp=com.app/.media.AudioService (has extras) }: java.lang.IllegalStateException: Caller's package UID doesn't match caller's actual UID?
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4710)
at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2182)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:346)
at android.os.Looper.loop(Looper.java:475)
at android.app.ActivityThread.main(ActivityThread.java:7950)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)
We haven't changed anything in the PackageValidator or the onGetSession override function in the new release, so that's why I'm suspecting the Media3 update being the culprit.
We added logging, and we can see that in this piece of code:
// Verify that things aren't ... broken. (This test should always pass.)
if (callerPackageInfo.uid != callingUid) {
throw IllegalStateException("Caller's package UID doesn't match caller's actual UID?")
}
the callingUid is now -1 whereas callerPackageInfo.uid is something like 10399 and varies for each crash. I guess this didn't happen before 1.10.
Crash 2:
We then tried to return false in isKnownCaller instead of throwing an exception, but after releasing this, we get a new crash we hadn't gotten before:
Fatal Exception: java.lang.RuntimeException: Unable to start service com.app.media.AudioService@5d09ebb with Intent { act=android.intent.action.MEDIA_BUTTON dat=androidx://media3.session/... xflg=0x4 cmp=com.app/.media.AudioService (has extras) }
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:6469)
at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:3111)
at android.os.Handler.dispatchMessage(Handler.java:132)
at android.os.Looper.dispatchMessage(Looper.java:358)
at android.os.Looper.loopOnce(Looper.java:288)
at android.os.Looper.loop(Looper.java:392)
at android.app.ActivityThread.main(ActivityThread.java:10346)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:638)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:972)
Caused by android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false: service com.app/.media.AudioService
at android.app.ForegroundServiceStartNotAllowedException$1.createFromParcel(ForegroundServiceStartNotAllowedException.java:54)
at android.app.ForegroundServiceStartNotAllowedException$1.createFromParcel(ForegroundServiceStartNotAllowedException.java:50)
at android.os.Parcel.readParcelableInternal(Parcel.java:5277)
at android.os.Parcel.readParcelable(Parcel.java:5258)
at android.os.Parcel.createExceptionOrNull(Parcel.java:3383)
at android.os.Parcel.createException(Parcel.java:3372)
at android.os.Parcel.readException(Parcel.java:3355)
at android.os.Parcel.readException(Parcel.java:3297)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:7682)
at android.app.Service.startForeground(Service.java:862)
at androidx.media3.common.util.Util$Api29.startForeground(Util.java:4408)
at androidx.media3.common.util.Util.setForegroundServiceNotification(Util.java:321)
at androidx.media3.session.MediaSessionService.stopSelfSafely(MediaSessionService.java:589)
at androidx.media3.session.MediaSessionService.onStartCommand(MediaSessionService.java:533)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:6453)
at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:3111)
at android.os.Handler.dispatchMessage(Handler.java:132)
at android.os.Looper.dispatchMessage(Looper.java:358)
at android.os.Looper.loopOnce(Looper.java:288)
at android.os.Looper.loop(Looper.java:392)
at android.app.ActivityThread.main(ActivityThread.java:10346)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:638)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:972)
My question is, is this not the way to go anymore? The UAMP project has been archived, so maybe this approach is deprecated? In Google's own docs they just return the mediaSession every time: https://developer.android.com/media/media3/session/background-playback#service-lifecycle
Or is this all caused by an unintentional change in 1.10?
Thank you in advance, I hope you can help us with how to proceed!
Media
Not applicable
Bug Report
- You will email the zip file produced by
adb bugreportto [email protected] after filing this issue.
- Lingua principale
- Java
- Stelle
- 3.1k
- Fork
- 998
- Merge medio
- 6g 8h
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di androidx/media
-
Waive ads when seek/start at the beginningForse già presa @microkatz l’ha presa 1 giorno fa. Apertaenhancement
androidx/media#3496 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Since 1.9.0, skip buttons in SLOT_BACK / SLOT_FORWARD reach legacy controllers as custom actionsForse già presa @marcbaechinger l’ha presa oggi. Apertabug
androidx/media#3495 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Allow configuring asset-list prefetch timing per HLS interstitialForse già presa @marcbaechinger l’ha presa 1 giorno fa. Apertaenhancement needs triage
androidx/media#3494 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Offloaded audio left paused keeps AudioFlinger's AudioOffload wake lock forever, device never suspendsForse già presa @microkatz l’ha presa 1 giorno fa. Aperta
androidx/media#3493 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Allow opting into frame-index seeking for MP3s without reliable seek metadataForse già presa @icbaker l’ha presa 1 giorno fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
androidx/media#3492 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di androidx/media
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
quarkiverse/quarkus-google-cloud-services#1188 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
opendataloader-project/opendataloader-pdf#851 ·
I maintainer di solito rispondono entro 1 giorno
-
Component: Frontend Component: Web Component Type: Maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
it-at-m/refarch-templates#1944 ·
I maintainer di solito rispondono entro 2 giorni
-
3.0.0-M*: every channel stays reachable from its session's KEX listeners, so a long-lived session leaks all closed channelsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno