Assertion failure: aStart <= aEnd, mozilla::MediaDecoderStateMachine::HasLowBufferedData

RESOLVED FIXED in Firefox 52

Status

()

RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: jya, Assigned: jya)

Tracking

({regression})

Trunk
mozilla52
regression
Points:
---

Firefox Tracking Flags

(firefox52 fixed)

Details

Attachments

(1 attachment)

(Assignee)

Description

2 years ago
Assertion failure: aStart <= aEnd, at c:\users\jyavenard\work\mozilla\mozilla-central\obj-x86_64-pc-mingw32\dist\include\Intervals.h:56
#01: mozilla::MediaDecoderStateMachine::HasLowBufferedData (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:2391)
#02: mozilla::MediaDecoderStateMachine::HasLowBufferedData (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:2346)
#03: mozilla::MediaDecoderStateMachine::NeedToSkipToNextKeyframe (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:1028)
#04: mozilla::MediaDecoderStateMachine::RequestVideoData (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:2280)
#05: mozilla::MediaDecoderStateMachine::EnsureVideoDecodeTaskQueued (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:2272)
#06: mozilla::MediaDecoderStateMachine::DispatchVideoDecodeTaskIfNeeded (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:2248)
#07: mozilla::MediaDecoderStateMachine::OnVideoPopped (c:\users\jyavenard\work\mozilla\mozilla-central\dom\media\mediadecoderstatemachine.cpp:1137)
#08: <lambda_564b2560bf46c3b2e200296a59d339c3>::operator() (c:\users\jyavenard\work\mozilla\mozilla-central\obj-x86_64-pc-mingw32\dist\include\mediaeventsource.h:437)
#09: mozilla::detail::ListenerHelper<1,mozilla::AbstractThread,<lambda_564b2560bf46c3b2e200296a59d339c3> >::R<RefPtr<mozilla::MediaData> const & __ptr64>::Invoke<RefPtr<mozilla::MediaData>,0> (c:\users\jyavenard\work\mozilla\mozilla-central\obj-x86_64-pc-mingw32\dist\include\mediaeventsource.h:178)
#10: mozilla::detail::ListenerHelper<1,mozilla::AbstractThread,<lambda_564b2560bf46c3b2e200296a59d339c3> >::R<RefPtr<mozilla::MediaData> const & __ptr64>::Run (c:\users\jyavenard\work\mozilla\mozilla-central\obj-x86_64-pc-mingw32\dist\include\mediaeventsource.h:185)
#11: mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run (c:\users\jyavenard\work\mozilla\mozilla-central\obj-x86_64-pc-mingw32\dist\include\mozilla\taskdispatcher.h:195)
#12: mozilla::TaskQueue::Runner::Run (c:\users\jyavenard\work\mozilla\mozilla-central\xpcom\threads\taskqueue.cpp:237)
#13: nsThreadPool::Run (c:\users\jyavenard\work\mozilla\mozilla-central\xpcom\threads\nsthreadpool.cpp:227)
#14: nsThread::ProcessNextEvent (c:\users\jyavenard\work\mozilla\mozilla-central\xpcom\threads\nsthread.cpp:1082)
#15: NS_ProcessNextEvent (c:\users\jyavenard\work\mozilla\mozilla-central\xpcom\glue\nsthreadutils.cpp:290)
#16: mozilla::ipc::MessagePumpForNonMainThreads::Run (c:\users\jyavenard\work\mozilla\mozilla-central\ipc\glue\messagepump.cpp:338)
#17: MessageLoop::RunInternal (c:\users\jyavenard\work\mozilla\mozilla-central\ipc\chromium\src\base\message_loop.cc:233)
#18: MessageLoop::RunHandler (c:\users\jyavenard\work\mozilla\mozilla-central\ipc\chromium\src\base\message_loop.cc:226)
#19: MessageLoop::Run (c:\users\jyavenard\work\mozilla\mozilla-central\ipc\chromium\src\base\message_loop.cc:206)
#20: nsThread::ThreadFunc (c:\users\jyavenard\work\mozilla\mozilla-central\xpcom\threads\nsthread.cpp:467)
#21: _PR_NativeRunThread (c:\users\jyavenard\work\mozilla\mozilla-central\nsprpub\pr\src\threads\combined\pruthr.c:406)
#22: pr_root (c:\users\jyavenard\work\mozilla\mozilla-central\nsprpub\pr\src\md\windows\w95thred.c:96)
#23: o__realloc_base[C:\WINDOWS\System32\ucrtbase.dll +0x1cab0]
#24: BaseThreadInitThunk[C:\WINDOWS\System32\KERNEL32.DLL +0x8364]
#25: RtlUserThreadStart[C:\WINDOWS\SYSTEM32\ntdll.dll +0x65e91]

context:
		aUsecs	5000000	__int64
		end	6997798	__int64
+		interval	{mStart={mValue={mValue=22000000 mIsValid=true } } mEnd={mValue={mValue=6997798 mIsValid=true } } mFuzz=...}	mozilla::media::Interval<mozilla::media::TimeUnit>
+		mBuffered	{mImpl={mRawPtr=0x0000013e84f1d120 {mValue={...} mCanonical={mRawPtr=0x0000013e821a6010 {mValue={...} ...} } } } }	mozilla::Mirror<mozilla::media::TimeIntervals>
		start	22000000	__int64
(Assignee)

Comment 1

2 years ago
The issue seems to have been intrdouced in bug 1302045

the commit message states " Check if we have [GetMediaTime(), GetMediaTime() + aUsecs] in the buffer ranges to decide whether we are in low buffered data"

but at a glance, this isn't what the code is doing...
it checks that [endOfDecodeData, GetMediaTime()+aUsecs] is in the buffered range.

so either something is wrong in the comment, or it's the code
(Assignee)

Comment 2

2 years ago
The assertion will occur if the duration of the frames decoded and queued by the MDSM is greater than LOW_DATA_THRESHOLD_USECS = 5000000.

If so, GetMediaTime() + aUsecs will be less than endOfDecodedData
The video available at bug 1301869 will trigger it (each frame but the first is 2s long)
(Assignee)

Updated

2 years ago
Keywords: regression
Comment hidden (mozreview-request)
(Assignee)

Updated

2 years ago
Assignee: nobody → jyavenard

Comment 4

2 years ago
mozreview-review
Comment on attachment 8795720 [details]
Bug 1305672: Prevent assertion.

https://reviewboard.mozilla.org/r/81694/#review80518

Doh!
Attachment #8795720 - Flags: review?(jwwang) → review+

Comment 6

2 years ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/b33de2e876d6
Status: NEW → RESOLVED
Last Resolved: 2 years ago
status-firefox52: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
Version: unspecified → Trunk
You need to log in before you can comment on or make changes to this bug.