Assertion failure: aTime >= 0.0 (Cannot seek to a negative value.) [@ mozilla::MediaDecoder::Seek]
Categories
(Core :: Audio/Video: Playback, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr52 | --- | unaffected |
firefox-esr60 | --- | wontfix |
firefox-esr78 | --- | wontfix |
firefox-esr102 | --- | wontfix |
firefox-esr115 | --- | wontfix |
firefox56 | --- | unaffected |
firefox57 | --- | unaffected |
firefox58 | --- | wontfix |
firefox66 | --- | wontfix |
firefox67 | --- | wontfix |
firefox68 | --- | wontfix |
firefox82 | --- | wontfix |
firefox83 | --- | wontfix |
firefox84 | --- | wontfix |
firefox85 | --- | wontfix |
firefox113 | --- | wontfix |
firefox114 | --- | wontfix |
firefox115 | --- | wontfix |
firefox118 | --- | wontfix |
firefox119 | --- | wontfix |
firefox120 | --- | fixed |
People
(Reporter: tsmith, Assigned: karlt)
References
(Blocks 1 open bug, Regressed 1 open bug, Regression)
Details
(Keywords: assertion, regression, testcase)
Attachments
(5 files)
Comment 1•7 years ago
|
||
Updated•7 years ago
|
Comment 3•7 years ago
|
||
Comment 4•7 years ago
|
||
Comment hidden (mozreview-request) |
Comment 6•7 years ago
|
||
mozreview-review |
Updated•7 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Reporter | ||
Updated•6 years ago
|
Reporter | ||
Comment 9•4 years ago
|
||
A Pernosco session is available here: https://pernos.co/debug/nPqGx-SQDPJahM9_aX2h7Q/index.html
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•2 years ago
|
Reporter | ||
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 10•1 year ago
|
||
https://pernos.co/debug/r5p0WBn7Te_YkAzjztZfbQ/index.html is a recording with more recent source code.
Moof::ParseTrun() appends samples to the Moof but does not update the decode time when the function returns early. This contributes to subsequent samples having earlier presentation times than those in the invalid moof.
Discarding the invalid Moof, as in attachment 8926219 [details], would seem a reasonable approach to address that. If doing so, the current inconsistent approach to decode time advancing for discarded successfully-parsed truns in the same Moof could also do with addressing.
An alternative approach of advancing the decode time for Samples successfully parsed from the invalid trun might be better for A/V sync, but there would be a gap in the buffered ranges. mTimeRange
is already not set on an invalid moof. Gap-filling between Samples is also is not performed, so playback of the samples could be problematic.
I assume we don't need to aim to play back invalid mp4 well. A solution here is more about making MoofParser return something that doesn't break invariants Gecko is expecting and freeing up fuzzing to find undiagnosed problems.
The testcase also exposes bug 1850851, but that did not exist when this bug was filed.
Assignee | ||
Comment 11•1 year ago
•
|
||
(In reply to Jean-Yves Avenard [:jya] from comment #6)
if (!moof.IsValid() && !box.Next().IsAvailable()) {
change the test here if it isnt valid.
This was a review on https://hg.mozilla.org/mozreview/gecko/rev/43ff74d5758a29989f3f62fb015f1dcb4535ac70.
Handling an invalid Moof
as suggested here skips unnecessary FixRounding()
.
Care needs to be taken to not advance mOffset if the Moof is not complete.
https://hg.mozilla.org/mozreview/gecko/rev/4d81c5f8293dabb5a69d8e1594414beb1bf626a7
and if it's complete, but invalid, somehow it would be nice to have the
error reported than just ignoree.
There's an existing LOG_WARN()
, but MoofParser doesn't otherwise attempt to report the nature of errors to its clients. Doing so is beyond the scope of this bug.
Assignee | ||
Comment 12•1 year ago
|
||
and don't advance decode time for complete truns in the incomple moof, the
samples of which already did not contribute to mTimeRange and were not
gap-filled.
Updated•1 year ago
|
Assignee | ||
Comment 13•1 year ago
|
||
Testcase from Tyson Smith <[email protected]>
Depends on D187170
Assignee | ||
Comment 14•1 year ago
|
||
so that AppendElement() always succeeds, as expected.
A single Moof can parse multiple truns.
The comment is removed because I'd prefer to keep mIndex as a FallibleTArray
to remind anyone changing the code to keep allocations fallible.
Comment 15•1 year ago
|
||
Comment 16•1 year ago
|
||
Comment 17•1 year ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/9f3d02701788
https://hg.mozilla.org/mozilla-central/rev/886a64cfbbf7
Comment 18•1 year ago
|
||
Comment 19•1 year ago
|
||
bugherder |
Updated•1 year ago
|
Updated•1 year ago
|
Description
•