Repeated live DASH Source errors: DashManifestParser ParserException contentIsMalformed dataType=4
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Media3 version
1.7.1 (androidx.media3:media3-exoplayer / media3-exoplayer-dash)
Devices that reproduce the issue
Samsung SM-S921B, Android 16
Devices that do not reproduce the issue
Not isolated to one OEM. Same ExoPlaybackException: Source error / DashManifestParser stack seen on other Android devices on this live DASH feed.
Reproducible in the demo app?
Cannot provide a public URL. Stream is authenticated live DASH (SSAI). Repro is: play live DASH for an extended period; MPD reload occasionally fails.
Reproduction steps
- Play a live DASH stream (
application/dash+xml/master.mpd). - Leave playback running (manifest refreshes).
- Observe repeated
TYPE_SOURCEfailures in one session (examples below: 19:05, 19:18, 20:07 on 2026-09-13).
Expected result
MPD refresh either succeeds, or a failed HTTP load is reported as an IO / HTTP error (HttpDataSourceException / response code) without DashManifestParser treating the payload as a malformed MPD.
Actual result
Repeated:
androidx.media3.exoplayer.ExoPlaybackException: Source error
Caused by: androidx.media3.common.ParserException:
inputStream does not contain a valid media presentation description
{contentIsMalformed=true, dataType=4}
at androidx.media3.exoplayer.dash.manifest.DashManifestParser.parse(DashManifestParser.java:124)
at androidx.media3.exoplayer.dash.manifest.DashManifestParser.parse(DashManifestParser.java:69)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:185)
Same session, three times:
| Time | Load failure immediately before | Then Exo |
|---|---|---|
| 19:05:32 / 19:05:41 | HTTP 500 on .../DASH_ENC/master.mpd |
Source error + ParserException |
| 19:18:36 / 19:18:59 | HTTP 500 on master.mpd (other region) |
same |
| 20:06:16 / 20:07:13 | UnknownHostException for the MPD host |
same |
In another session, initialize GET on .../master.mpd returned HTTP 504, empty body (~6.4s); Exo still surfaced the same ParserException / contentIsMalformed=true / dataType=4 on the play MPD.
We do not have the response body for a 3002-after-HTTP-200 case. Bodies were not captured in logcat.
Question
Is contentIsMalformed=true / DashManifestParser.parse expected when:
- the MPD URL returns HTTP 500 (non-MPD or error body), or
- the body is empty (504), or
- DNS fails then a later parse runs?
If yes, we will treat this as working as designed and handle 5xx/empty at the data source. If not, we can recapture a Charles HAR with response.content when we next hit HTTP 200 + this exception.
Media
Redacted log + stub HAR (no PII, no full query string, no MPD XML — bodies were never logged):
media3-repeated-source-manifest-errors-redacted.logmedia3-mpd-http-500-redacted.har
Bug Report Checklist
- Searched existing issues for
DashManifestParser/contentIsMalformed/ Source error on live DASH - Media3 version listed
- Device listed
- Demo app (private live stream)
- Steps / expected / actual
- Stack traces (redacted log attached)
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.
Research direction
Start with DashManifestParser.java:124 and ParsingLoadable.java:185, then trace how HTTP 500, 504, empty responses, and DNS failures reach parsing. Review the attached redacted log and stub HAR, noting that response bodies are unavailable. Done means establishing whether the reported ParserException is expected and identifying the appropriate handling or documentation change.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- audio-video-rtc, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100