Closed Bug 1293546 Opened 8 years ago Closed 3 years ago

many "JavaScript error: , line 0: uncaught exception: undefined" in desktop-test-linux64/debug-mochitest-media log

Categories

(Core :: Audio/Video: Playback, defect, P5)

defect

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox51 --- affected

People

(Reporter: arai, Unassigned)

References

Details

https://public-artifacts.taskcluster.net/djBUo_RRT6qwRRryXKQAQA/0/public/logs/live_backing.log
> 00:20:52     INFO -  JavaScript error: , line 0: uncaught exception: undefined
> 00:20:52     INFO -  JavaScript error: , line 0: uncaught exception: undefined

It's a promise reject, thrown from HTMLMediaElement::SetCurrentTime.
The code was changed to use promise in bug 1276272.

https://dxr.mozilla.org/mozilla-central/rev/e78975b53563d80c99ebfbdf8a9fbf6b829a8a48/dom/html/HTMLMediaElement.cpp#1656
> void
> HTMLMediaElement::SetCurrentTime(double aCurrentTime, ErrorResult& aRv)
> {
>   RefPtr<Promise> tobeDropped = Seek(aCurrentTime, SeekTarget::Accurate, aRv);
> }


that is invoked here, and also from several tests.

https://dxr.mozilla.org/mozilla-central/rev/e78975b53563d80c99ebfbdf8a9fbf6b829a8a48/dom/media/test/test_seek-4.html#30
> function startTest() {
> ...
>   v.currentTime=seekTime;
> ...
> }


HTMLMediaElement::Seek returns a promise, that can be rejected, but no one catch it.
that seems to be results in logging the uncaught exception.

https://dxr.mozilla.org/mozilla-central/rev/e78975b53563d80c99ebfbdf8a9fbf6b829a8a48/dom/html/HTMLMediaElement.cpp#1698
> already_AddRefed<Promise>
> HTMLMediaElement::Seek(double aTime,
>                        SeekTarget::Type aSeekType,
>                        ErrorResult& aRv)
> {
> ...
>     promise->MaybeRejectWithUndefined();
>     return promise.forget();

This started happening after bug 911216 push for inbound, so it could be SpiderMonkey's Promise impl's issue.
but the "tobeDropped" promise in HTMLMediaElement::SetCurrentTime is suspicious.
(In reply to Tooru Fujisawa [:arai] from comment #0)
> This started happening after bug 911216 push for inbound, so it could be
> SpiderMonkey's Promise impl's issue.
> but the "tobeDropped" promise in HTMLMediaElement::SetCurrentTime is
> suspicious.
HTMLMediaElement::Seek() has only three callers:
(1) HTMLMediaElement::SetCurrentTime() 
    http://searchfox.org/mozilla-central/source/dom/html/HTMLMediaElement.cpp#1656
(2) HTMLMediaElement::FastSeek()
    http://searchfox.org/mozilla-central/source/dom/html/HTMLMediaElement.cpp#1644
(3) HTMLMediaElement::SeekToNextFrame()
    http://searchfox.org/mozilla-central/source/dom/html/HTMLMediaElement.cpp#1650

Only (3) needs the returned promise of HTMLMediaElement::Seek(); both (1) and (2) ignores them. How about we steal the ErrorResule in (1) and (2) before discarding the promise?

the code there is rewritten, and the error is no more reproducible.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.