java.lang.NullPointerException only on Pixel 10 XL Pro
@marcbaechinger is already working on this.
Since Sep 11, 2025.
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Version
Media3 1.8.0
More version details
No response
Devices that reproduce the issue
Pixel 10 XL Pro, running Android 16
Devices that do not reproduce the issue
Pixel 7a, running Android 16
Samsung Galaxy A26
Pixel 8a, running Android 16
Reproducible in the demo app?
Not tested
Reproduction steps
This error is reported via Firebase Crashlytics in production, and we have no way of reproducing it.
Expected result
App doesn't crash.
Actual result
App crashes.
We have one of our users using Pixel 10 XL Pro triggering the following error. Puzzling part is that this is only reproducible on Pixel 10, and the frustrating part is that none of the stack points to the origin in our code, so I wouldn't even know where to catch the exception, if I wanted to. Any recommendations?
# Crashlytics - Stack trace
# Platform: android
# Version: 1.20250821.3 (201241)
# Issue: 73e5c4a5942c95dd06b55d3ef6919b7b
# Session: 68C0AAE2010400014F2CF56363813099_DNE_1_v2
# Date: Tue Sep 09 2025 15:32:06 GMT-0700 (Pacific Daylight Time)
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at androidx.media3.common.util.Assertions.checkNotNull(Assertions.java)
at androidx.media3.exoplayer.offline.DownloadManager$InternalHandler.syncTasks(DownloadManager.java:970)
at androidx.media3.exoplayer.offline.DownloadManager$InternalHandler.onTaskStopped(DownloadManager.java:1102)
at androidx.media3.exoplayer.offline.DownloadManager$InternalHandler.handleMessage(DownloadManager.java:763)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.dispatchMessage(Looper.java:315)
at android.os.Looper.loopOnce(Looper.java:251)
at android.os.Looper.loop(Looper.java:349)
at android.os.HandlerThread.run(HandlerThread.java:100)
glide-active-resources:
at java.lang.Object.wait(Object.java)
at java.lang.Object.wait(Object.java:405)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:207)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:228)
at com.bumptech.glide.load.engine.ActiveResources.cleanReferenceQueue(ActiveResources.java:132)
at com.bumptech.glide.load.engine.ActiveResources$2.run(ActiveResources.java:61)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at com.bumptech.glide.load.engine.ActiveResources$1$1.run(ActiveResources.java:43)
at java.lang.Thread.run(Thread.java:1119)
Firebase Blocking Thread #1:
at jdk.internal.misc.Unsafe.park(Unsafe.java)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410)
at java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452)
at java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194)
at java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:233)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:336)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1081)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0(CustomThreadFactory.java:47)
at java.lang.Thread.run(Thread.java:1119)
FileObserver:
at android.os.FileObserver$ObserverThread.observe(FileObserver.java)
at android.os.FileObserver$ObserverThread.run(FileObserver.java:116)
Firebase Blocking Thread #3:
at libcore.io.Linux.close(Linux.java)
at libcore.io.ForwardingOs.close(ForwardingOs.java:176)
at libcore.io.BlockGuardOs.close(BlockGuardOs.java:113)
at libcore.io.ForwardingOs.close(ForwardingOs.java:176)
at libcore.io.IoBridge.closeAndSignalBlockedThreads(IoBridge.java:311)
at java.io.FileInputStream.close(FileInputStream.java:578)
at com.google.firebase.installations.local.PersistedInstallation.readJSONFromFile(PersistedInstallation.java:138)
at com.google.firebase.installations.local.PersistedInstallation.readPersistedInstallationEntryValue(PersistedInstallation.java)
at com.google.firebase.installations.FirebaseInstallations.getMultiProcessSafePrefs(FirebaseInstallations.java:625)
at com.google.firebase.installations.FirebaseInstallations.doNetworkCallIfNecessary(FirebaseInstallations.java)
at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationOrRefresh$3(FirebaseInstallations.java)
at com.google.firebase.concurrent.SequentialExecutor$1.run(SequentialExecutor.java:117)
at com.google.firebase.concurrent.SequentialExecutor$QueueWorker.workOnQueue(SequentialExecutor.java:229)
at com.google.firebase.concurrent.SequentialExecutor$QueueWorker.run(SequentialExecutor.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0(CustomThreadFactory.java:47)
at java.lang.Thread.run(Thread.java:1119)
OkHttp Dispatcher:
at jdk.internal.misc.Unsafe.park(Unsafe.java)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410)
at java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452)
at java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194)
at java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:233)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:336)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1081)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at java.lang.Thread.run(Thread.java:1119)
[com.mycopilot.copilotapp_issue_73e5c4a5942c95dd06b55d3ef6919b7b_crash_session_68C0AAE2010400014F2CF56363813099_DNE_1_v2_stacktrace.txt](https://github.com/user-attachments/files/22262094/com.mycopilot.copilotapp_issue_73e5c4a5942c95dd06b55d3ef6919b7b_crash_session_68C0AAE2010400014F2CF56363813099_DNE_1_v2_stacktrace.txt)
Media
{"text":"up first is 30 seconds of kneeling-push-up. press start to begin.","url":"https://deltatrainer-voice-prompts.s3.amazonaws.com/7cd353d2e94de9310717197469b230e7f74d53240e2dea551c808562e1d8fa2667b2d455f1a27781ddf38b07bfeb61b194e852ae2a03025f86cc2d8ed7228cac.mp3"},
{"text":"up first is 30 seconds of kneeling-push-up.","url":"https://deltatrainer-voice-prompts.s3.amazonaws.com/a4b1762175b9cc776124e5996a882a51be4f4f8af0bf0e4f7323dbb0aabc06b5863b651fde58d63becdc7b10681fded1a34f770111d98e09436eab69be17a135.mp3"},
{"text":"left side.",
"url":"https://deltatrainer-voice-prompts.s3.amazonaws.com/a2f28fc8b5ff7d533feb62673b884726c0fac8c82cb0f21b989f99622838d25a81cdcd749f01949a06d3755b402dd67c3f643b15f4f1bcad4aa2972521ed9156.mp3"},
{"text":"up next is 30 seconds of chest-opener.","url":"https://deltatrainer-voice-prompts.s3.amazonaws.com/451418c9427f09c2af42b8fa97b538354483fd02c9df535badd42b742e417a7b76d1f365f262ef3fc11f3c48d24acc251e00b57672ead1a841a62c30ccff0c1b.mp3"},
Bug Report
- You will email the zip file produced by
adb bugreportto android-media-github@google.com after filing this issue.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.