Open Bug 1088472 Opened 10 years ago Updated 8 months ago

test_SeekableBeforeEndOfStream.html hangs in seeking within test.webm

Categories

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

defect

Tracking

()

People

(Reporter: jwwang, Unassigned)

References

Details

Attachments

(1 file)

I tried to have test_SeekableBeforeEndOfStream.html test different files to increase the test coverage: 1. copy testing/web-platform/tests/media-source/webm/test.webm to content/media/mediasource/test 2. apply test_SeekableBeforeEndOfStream_html_mod.patch 3. run |./mach mochitest-plain content/media/mediasource/test/test_SeekableBeforeEndOfStream.html| I found it hang during seeking within test.webm. However it didn't with the original seek.webm. I wonder there is something wrong to test.webm which is used by our web-platform media-source tests. And it could be the reason why the web-platform media-source tests tend to time out.
Flags: needinfo?(kinetik)
Nice find! The main difference is that test.webm has the Cues at the end of the file whereas seek.webm has them at the beginning. The seek blocks in WebMReader::Seek when the script sets currentTime to 2s with the following stack: mozilla::ReentrantMonitorAutoEnter::Wait mozilla::SourceBufferResource::Read mozilla::webm_read ne_io_read ne_bare_read_vint ne_read_id ne_peek_element ne_parse ne_init_cue_points nestegg_track_seek mozilla::WebMReader::Seek In SourceBufferResource::Read, blockingRead is true, mEnded is false, and mOffset is 219448. The length of test.webm is also 219448. ne_parse attempts to read until it sees a non-Cue element or EOF. Since we're not at EOF (because EndOfStream has not been called and we don't know if more data will be appended) and we're never going to receive more data (to see a non-Cue element), ne_parse never completes because it's waiting on data that will never arrive.
Flags: needinfo?(kinetik)
(In reply to Matthew Gregan [:kinetik] from comment #1) > Nice find! The main difference is that test.webm has the Cues at the end of > the file whereas seek.webm has them at the beginning. Does that mean test.webm has an invalid format or our webm reader should handle this case?
(In reply to JW Wang [:jwwang] from comment #2) > Does that mean test.webm has an invalid format or our webm reader should > handle this case? It's a perfectly valid WebM file. The problem is a bug/bad interaction between our WebM parser and the way MSE resources are presented to it. (In reply to Jean-Yves Avenard [:jya] from comment #3) > I wouldn't be surprised if the reason was related to the issues I'm seeing > in bug 1065827. > I believe I have identified the issue in the MediaDecoderStateMachine, > there's a racing condition that can happen when we are in DECODER_SEEKING > state and we enter DECODER_DECODING state before > MediaDecoderStateMachine::DecoderSeek gets the chance to run It's unrelated.
Blocks: 1085247
Blocks: 1097723
Priority: -- → P5
Component: Audio/Video → Audio/Video: Playback
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: