Closed Bug 1104410 Opened 5 years ago Closed 5 years ago

Crash when seeking in MSE WebM video

Categories

(Core :: Audio/Video, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla36

People

(Reporter: cajbir, Assigned: cajbir)

References

Details

Attachments

(1 file)

This is a regression. Steps to reproduce:

1) Go to http://www.youtube.com/watch?v=3V7wWemZ_cs
2) Wait for playback to start
3) Seek to 3:28

Expected result:

4) Seek completes and playback continues

Actual result:

4) Crash in media decode thread resulting in seek hanging.

Stack trace:

#0  0x00007f223dc759bd in nanosleep () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f223dc75854 in __sleep (seconds=0) at ../sysdeps/unix/sysv/linux/sleep.c:137
#2  0x00007f22393d8c40 in ah_crap_handler (signum=11) at /home/chris/src/mse/toolkit/xre/nsSigHandlers.cpp:101
#3  0x00007f22393cbcc7 in nsProfileLock::FatalSignalHandler (signo=11, info=0x7f2218aac6b0, context=0x7f2218aac580)
    at /home/chris/src/mse/profile/dirserviceprovider/nsProfileLock.cpp:190
#4  <signal handler called>
#5  0x00007f2238981352 in mozilla::WebMReader::SeekInternal (this=0x7f220aab0000, aTarget=208613281, aStartTime=0)
    at dom/media/webm/WebMReader.cpp:976
#6  0x00007f223897c6fd in mozilla::WebMReader::Seek (this=0x7f220aab0000, aTarget=<optimized out>, aStartTime=<optimized out>, aEndTime=<optimized out>, 
    aCurrentTime=<optimized out>) at dom/media/webm/WebMReader.cpp:969
#7  0x00007f2238928b02 in mozilla::MediaSourceReader::AttemptSeek (this=0x7f220600d000) at dom/media/mediasource/MediaSourceReader.cpp:536
#8  0x00007f2238929917 in nsRunnableMethodImpl<void (mozilla::MediaSourceReader::*)(), void, true>::Run (this=<optimized out>)
    at ../../../dist/include/nsThreadUtils.h:388
#9  0x00007f22388cc3be in mozilla::MediaTaskQueue::Runner::Run (this=0x7f221566ca40) at dom/media/MediaTaskQueue.cpp:194
#10 0x00007f22376a50c6 in nsThreadPool::Run (this=0x7f220e7abed0) at xpcom/threads/nsThreadPool.cpp:220
Blocks: MSE
Might be a regression from bug 922314, if line 976 is:

  nsresult rv = mVideoDecoder->Flush();

...in your tree.

That needs to be wrapped with an if (mVideoDecoder) {} since an audio-only stream won't have a video decoder.
(In reply to Matthew Gregan [:kinetik] from comment #1)
> Might be a regression from bug 922314, if line 976 is:
> 
>   nsresult rv = mVideoDecoder->Flush();
> 
> ...in your tree.
> 
> That needs to be wrapped with an if (mVideoDecoder) {} since an audio-only
> stream won't have a video decoder.

Yes, it was a regression from bug 922314. Works before that landed, crashes after.
Attached patch FixSplinter Review
Fix as per comment 1.
Assignee: nobody → cajbir.bugzilla
Status: NEW → ASSIGNED
Attachment #8528111 - Flags: review?(kinetik)
Attachment #8528111 - Flags: review?(kinetik) → review+
https://hg.mozilla.org/mozilla-central/rev/13aa9ac1791e
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla36
Blocks: 922314
No longer blocks: MSE
Duplicate of this bug: 1104894
Duplicate of this bug: 1105029
Duplicate of this bug: 1105139
Would it be possible to add a testcase for this bug? It seems to have affected a lot of people.
Flags: needinfo?(kinetik)
Duplicate of this bug: 1105210
Flags: in-testsuite?
Duplicate of this bug: 1105539
(In reply to Bill McCloskey (:billm) from comment #9)
> Would it be possible to add a testcase for this bug? It seems to have
> affected a lot of people.

Yeah, I pushed something to try: https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=58bd8a5d5972

If that's green, I'll land it on inbound soon.
Flags: needinfo?(kinetik)
(In reply to Matthew Gregan [:kinetik] from comment #12)
> If that's green, I'll land it on inbound soon.

https://hg.mozilla.org/integration/mozilla-inbound/rev/49f9502a978e
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.