Closed Bug 1305672 Opened 8 years ago Closed 8 years ago

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

Categories

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

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla52
Tracking Status
firefox52 --- fixed

People

(Reporter: jya, Assigned: jya)

References

Details

(Keywords: regression)

Attachments

(1 file)

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
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
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)
Keywords: regression
Assignee: nobody → jyavenard
Attachment #8795720 - Flags: review?(jwwang) → review+
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
Version: unspecified → Trunk
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: