androidx / androidx/media

java.lang.NullPointerException only on Pixel 10 XL Pro

Open
#2,770 4 comments 1 reaction 1 assignee View on GitHub

@marcbaechinger is already working on this.

Since Sep 11, 2025.

bug needs triage
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 bugreport to android-media-github@google.com after filing this issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.