DCHECK in appendError() |
|||||
Issue descriptionWith current ToT, a decode error while seeking on YouTube results in a DCHECK: [41680:1295:0628/162013:ERROR:render_media_log.cc(25)] MediaEvent: PIPELINE_ERROR pipeline: decode error [41680:1295:0628/162013:FATAL:SourceBuffer.cpp(993)] Check failed: false. DOMExeption should not be thrown.
,
Jul 7 2016
,
Aug 18 2016
Ping for update
,
Jun 28 2017
I have a better repro today, and a better understanding. Using b/62450277 (step 1 from comment #23, URL from comment #28, results in comment #31), I found debug build fails the ASSERT_NO_EXCEPTION from the SourceBuffer::appendError method's call to MediaSource::endOfStream, because MediaSource::endOfStreamInternal throws exception if open or updating -- before "running the end of stream algorithm". I think the solution is to extract out the "run the end of stream algorithm" subset of steps to allow appendError() to call them directly.
,
Jun 28 2017
To clarify #4 a little further, I checked locally with some additional logging on a repro, and found that there's no guarantee that no *other* sourcebuffer is currently 'updating' when this sourcebuffer runs appendError(), hence MediaSource::IsUpdating() can be true, and the old code incorrectly could through a DOMException on appendError (which violates spec, and in debug mode violates ASSERT_NO_EXCEPTION at the call point). I'll have a fix out shortly for review.
,
Jun 28 2017
Fix is in review at https://chromium-review.googlesource.com/552824
,
Jun 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/17f65f892acfa4948c130f988747d6f7811372db commit 17f65f892acfa4948c130f988747d6f7811372db Author: Matt Wolenetz <wolenetz@chromium.org> Date: Thu Jun 29 00:12:50 2017 MSE: Don't throw exception on SourceBuffer::appendError() appendError()'s last step is to run the end of stream algorithm, according to spec. However, the code was structured such that it would call the full MediaSource.endOfStream() method. That method has some extra checks which can sometimes fail (and cause exception) in this appendError() path. This change refactors to to expose publicly a MediaSource method EndOfStreamAlgorithm, which SourceBuffer::AppendError() now uses. BUG= 624185 Change-Id: Ic8d2a59906b6403d74a8a9c65a3a428258f9b4e3 Reviewed-on: https://chromium-review.googlesource.com/552824 Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> Reviewed-by: Chrome Cunningham <chcunningham@chromium.org> Cr-Commit-Position: refs/heads/master@{#483210} [modify] https://crrev.com/17f65f892acfa4948c130f988747d6f7811372db/third_party/WebKit/Source/modules/mediasource/MediaSource.cpp [modify] https://crrev.com/17f65f892acfa4948c130f988747d6f7811372db/third_party/WebKit/Source/modules/mediasource/MediaSource.h [modify] https://crrev.com/17f65f892acfa4948c130f988747d6f7811372db/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
,
Jun 29 2017
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by wolenetz@chromium.org
, Jul 7 2016