Open Bug 1540582 Opened 1 year ago Updated 1 year ago

Assertion failure: mSampleDescriptions.IsEmpty() (Shouldn't have any sample descriptions yet when starting to parse stsd), at src/dom/media/mp4/MoofParser.cpp:364

Categories

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

defect

Tracking

()

Tracking Status
firefox68 --- affected

People

(Reporter: tsmith, Assigned: bryce)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached video testcase.mp4

Found with m-c:
BuildID=20190331215222
SourceStamp=70a50fe09a18b2516e9ffdb2083debfab7de720d

Assertion failure: mSampleDescriptions.IsEmpty() (Shouldn't have any sample descriptions yet when starting to parse stsd), at src/dom/media/mp4/MoofParser.cpp:364

#0 mozilla::MoofParser::ParseStsd(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:362:3
#1 mozilla::MoofParser::ParseStbl(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:327:7
#2 mozilla::MoofParser::ParseMinf(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:317:7
#3 mozilla::MoofParser::ParseMdia(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:293:7
#4 mozilla::MoofParser::ParseTrak(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:276:9
#5 mozilla::MoofParser::ParseMoov(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:259:7
#6 mozilla::MoofParser::RebuildFragmentedIndex(mozilla::BoxContext&) src/dom/media/mp4/MoofParser.cpp:71:7
#7 mozilla::MoofParser::RebuildFragmentedIndex(mozilla::media::IntervalSet<long> const&) src/dom/media/mp4/MoofParser.cpp:41:10
#8 mozilla::Index::UpdateMoofIndex(mozilla::media::IntervalSet<long> const&, bool) src/dom/media/mp4/Index.cpp:491:16
#9 mozilla::MP4TrackDemuxer::EnsureUpToDateIndex() src/dom/media/mp4/MP4Demuxer.cpp:390:11
#10 mozilla::MP4TrackDemuxer::MP4TrackDemuxer(mozilla::MediaResource*, mozilla::UniquePtr<mozilla::TrackInfo, mozilla::DefaultDelete<mozilla::TrackInfo> >&&, mozilla::IndiceWrapper const&) src/dom/media/mp4/MP4Demuxer.cpp:352:3
#11 mozilla::MP4Demuxer::Init() src/dom/media/mp4/MP4Demuxer.cpp:224:45
#12 mozilla::MediaFormatReader::DemuxerProxy::Init()::$_13::operator()() const src/dom/media/MediaFormatReader.cpp:789:47
#13 mozilla::detail::ProxyFunctionRunnable<mozilla::MediaFormatReader::DemuxerProxy::Init()::$_13, mozilla::MozPromise<mozilla::MediaResult, mozilla::MediaResult, true> >::Run() src/obj-firefox/dist/include/mozilla/MozPromise.h:1419:29
#14 mozilla::TaskQueue::Runner::Run() src/xpcom/threads/TaskQueue.cpp:199:12
#15 nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp:244:14
#16 non-virtual thunk to nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp
#17 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1180:14
#18 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:482:10
#19 mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:303:20
#20 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:315:10
#21 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:290:3
#22 nsThread::ThreadFunc(void*) src/xpcom/threads/nsThread.cpp:454:11
#23 _pt_root src/nsprpub/pr/src/pthreads/ptthread.c:201:5
Flags: in-testsuite?

Bryce, I see your name plenty in the MoofParser history; can you take a look?

Rank: 15
Flags: needinfo?(bvandyk)
Priority: -- → P2

This is caused by metadata containing multiple sample table (stbl) and sample description (stsd) boxes for the same track. In this case there are two separate trak boxes for the same track, with a lot of metadata duplicated, but it would also be possible to simply have duplicate stbl and stsd boxes in a single trak box which could trigger this.

All of the above is not allowed per the spec, but I'll change what we're doing here so we log a warning here instead of asserting.

Assignee: nobody → bvandyk
Flags: needinfo?(bvandyk)

Mp4s should not have multiple sample description (stsd) boxes for a track, but
since we can be fed malformed files we should be tolerant and log rather than
asserting.

You need to log in before you can comment on or make changes to this bug.