Closed Bug 1307013 Opened 8 years ago Closed 8 years ago

Non-fatal decode errors send the media format reader into an update loop

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla52
Tracking Status
firefox50 --- affected
firefox52 --- fixed

People

(Reporter: mstange, Assigned: jya)

References

Details

Attachments

(2 files)

Attached file lldb session
My Nightly on macOS is currently using 150% CPU and heating up my machine. An Activity Monitor sample shows that most of the time is spent adding and removing runnables to the TaskQueue on a MediaPlayback thread, and in MediaFormatReader::NotifyError:

[...]
mozilla::TaskQueue::Runner::Run()
mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run()
mozilla::detail::RunnableMethodImpl<[...]>::Run()
mozilla::MediaFormatReader::Update(mozilla::TrackInfo::TrackType)
mozilla::MediaFormatReader::NotifyError(mozilla::TrackInfo::TrackType, mozilla::MediaResult const&)
mozilla::MediaFormatReader::ScheduleUpdate(mozilla::TrackInfo::TrackType)
mozilla::TaskQueue::Dispatch([...])
[...]

MediaFormatReader::Update calls NotifyError here:

  if (decoder.mError && !decoder.HasFatalError()) {
    decoder.mDecodePending = false;
    if (++decoder.mNumOfConsecutiveError > decoder.mMaxConsecutiveError) {
      NotifyError(aTrack, decoder.mError.ref());
      return;
    }

And the fact that NotifyError calls ScheduleUpdate might explain the loop.

After scavenging through the memory in lldb, I found out that decoder.mNumOfConsecutiveError is currently 1256059039 (and keeps increasing, actually it might have looped around a few times by now), decoder.mMaxConsecutiveError is 2, and the decoder.mError.mMessage is "DoDecode: VTDecompressionSessionDecodeFrame:ffffcd93" (and ffffcd93 is -12909).

Is there something that's supposed to stop this loop? My Nightly is still in this state, I could debug some more if anybody has ideas.
I have closed all tabs with videos in them hours ago.
Assignee: nobody → jyavenard
error should be fatal... need to force a way to tell to stop
do you have a link to a video to verify the problem?
Comment on attachment 8798314 [details]
Bug 1307013: Error once number of errors reach threshold.

https://reviewboard.mozilla.org/r/83830/#review82392
Attachment #8798314 - Flags: review?(gsquelart) → review+
Pushed by jyavenard@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c86d121c0ef5
Error once number of errors reach threshold. r=gerald
https://hg.mozilla.org/mozilla-central/rev/c86d121c0ef5
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
(In reply to Jean-Yves Avenard [:jya] from comment #2)
> do you have a link to a video to verify the problem?

Unfortunately I don't know which video caused the problem.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: