Closed Bug 1545970 Opened 8 months ago Closed 5 months ago

Assertion failure: (-2147483647-1) <= aVal && aVal <= (2147483647), at src/dom/media/TimeUnits.h:164

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla70
Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- wontfix
firefox68 --- wontfix
firefox69 --- wontfix
firefox70 --- fixed

People

(Reporter: tsmith, Assigned: alwu)

References

(Blocks 1 open bug, Regression)

Details

(4 keywords)

Attachments

(2 files)

Attached video testcase.webm

Found with m-c:
BuildID=20190420214758
SourceStamp=72be82c6809e2cc187e5cffdff0c3e686c564a57

Assertion failure: (-2147483647-1) <= aVal && aVal <= (2147483647), at src/dom/media/TimeUnits.h:164

#0 mozilla::media::operator/(mozilla::media::TimeUnit const&, long) src/dom/media/TimeUnits.h:165:5
#1 mozilla::FramesToTimeUnit(long, unsigned int) src/dom/media/VideoUtils.cpp:58:64
#2 mozilla::VorbisDataDecoder::ProcessDecode(mozilla::MediaRawData*) src/dom/media/platforms/agnostic/VorbisDecoder.cpp:199:21
#3 decltype(*(fp).*fp0(Get<0ul>(fp1).PassAsParameter())) mozilla::detail::RunnableMethodArguments<mozilla::MediaRawData*>::applyImpl<mozilla::VorbisDataDecoder, RefPtr<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true> > (mozilla::VorbisDataDecoder::*)(mozilla::MediaRawData*), StoreRefPtrPassByPtr<mozilla::MediaRawData>, 0ul>(mozilla::VorbisDataDecoder*, RefPtr<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true> > (mozilla::VorbisDataDecoder::*)(mozilla::MediaRawData*), mozilla::Tuple<StoreRefPtrPassByPtr<mozilla::MediaRawData> >&, std::integer_sequence<unsigned long, 0ul>) src/obj-firefox/dist/include/nsThreadUtils.h:1122:12
#4 _ZN7mozilla6detail23RunnableMethodArgumentsIJPNS_12MediaRawDataEEE5applyINS_17VorbisDataDecoderEMS6_F6RefPtrINS_10MozPromiseI8nsTArrayIS7_INS_9MediaDataEEENS_11MediaResultELb1EEEES3_EEEDTcl9applyImplfp_fp0_dtdefpT10mArgumentstlSt16integer_sequenceImJLm0EEEEEEPT_T0_ src/obj-firefox/dist/include/nsThreadUtils.h:1128:12
#5 mozilla::detail::MethodCall<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true>, RefPtr<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true> > (mozilla::VorbisDataDecoder::*)(mozilla::MediaRawData*), mozilla::VorbisDataDecoder, mozilla::MediaRawData*>::Invoke() src/obj-firefox/dist/include/mozilla/MozPromise.h:1293:47
#6 mozilla::detail::ProxyRunnable<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true>, RefPtr<mozilla::MozPromise<nsTArray<RefPtr<mozilla::MediaData> >, mozilla::MediaResult, true> > (mozilla::VorbisDataDecoder::*)(mozilla::MediaRawData*), mozilla::VorbisDataDecoder, mozilla::MediaRawData*>::Run() src/obj-firefox/dist/include/mozilla/MozPromise.h:1313:42
#7 mozilla::TaskQueue::Runner::Run() src/xpcom/threads/TaskQueue.cpp:199:12
#8 nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp:244:14
#9 non-virtual thunk to nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp
#10 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1180:14
#11 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:486:10
#12 mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:303:20
#13 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:315:10
#14 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:290:3
#15 nsThread::ThreadFunc(void*) src/xpcom/threads/nsThread.cpp:454:11
#16 _pt_root src/nsprpub/pr/src/pthreads/ptthread.c:201:5
#17 start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#18 clone /build/glibc-LK5gWL/glibc-2.23/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Flags: in-testsuite?

Tim, would you be the right person to look at this?

Flags: needinfo?(tterribe)
Priority: -- → P2

Bug 1544150 added the assertion that this test case is causing to fail.

Flags: needinfo?(tterribe) → needinfo?(alwu)
Regressed by: 1544150
Assignee: nobody → alwu
Flags: needinfo?(alwu)

The way we use operator/ on TimeUnit is usaually to divide 2 for the fuzz or to divide the playback rate, and the rate is always a unsigned int.

The operator% should also have same constraint, because there is meaningless to do such a operation on a negative value.

Blocks: 1465407
Pushed by alwu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/bf18e1748c4b
make sure we only divide or modular TimeUnit on unsigned int32. r=jya
Status: NEW → RESOLVED
Closed: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70
Flags: in-testsuite? → in-testsuite-
You need to log in before you can comment on or make changes to this bug.