Closed
Bug 1182999
Opened 10 years ago
Closed 10 years ago
MOZ_CRASH("Insertion Index Not Found")
Categories
(Core :: Audio/Video, defect)
Core
Audio/Video
Tracking
()
RESOLVED
FIXED
mozilla42
| Tracking | Status | |
|---|---|---|
| firefox42 | --- | fixed |
People
(Reporter: jya, Assigned: jya)
References
Details
Attachments
(1 file)
|
1.78 KB,
patch
|
mozbugz
:
review+
|
Details | Diff | Splinter Review |
Occurred when seeking back and forth in non buffered area.
(lldb) bt
* thread #100: tid = 0x6dc094, 0x0000000106813e42 XUL`mozilla::TrackBuffersManager::CheckNextInsertionIndex(this=0x000000014408d000, aTrackData=0x000000014408d290, aSampleTime=0x00000001443c5ce8) + 914 at TrackBuffersManager.cpp:1447, name = 'MediaPl~back #4', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x0000000106813e42 XUL`mozilla::TrackBuffersManager::CheckNextInsertionIndex(this=0x000000014408d000, aTrackData=0x000000014408d290, aSampleTime=0x00000001443c5ce8) + 914 at TrackBuffersManager.cpp:1447
frame #1: 0x000000010681394b XUL`mozilla::TrackBuffersManager::InsertFrames(this=0x000000014408d000, aSamples=0x00000001443c6250, aIntervals=0x00000001443c6410, aTrackData=0x000000014408d290) + 635 at TrackBuffersManager.cpp:1493
frame #2: 0x000000010681352c XUL`mozilla::TrackBuffersManager::ProcessFrames(this=0x000000014408d000, aSamples=0x000000014408d320, aTrackData=0x000000014408d290) + 4012 at TrackBuffersManager.cpp:1404
frame #3: 0x0000000106811e9f XUL`mozilla::TrackBuffersManager::CompleteCodedFrameProcessing(this=0x000000014408d000) + 895 at TrackBuffersManager.cpp:1134
frame #4: 0x0000000106812571 XUL`mozilla::TrackBuffersManager::OnAudioDemuxCompleted(this=0x000000014408d000, aSamples=nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder> at 0x00000001443c6668) + 305 at TrackBuffersManager.cpp:1109
frame #5: 0x0000000106823076 XUL`mozilla::EnableIf<(ReturnTypeIs<void (mozilla::TrackBuffersManager::*)(nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>), void>::value) && (TakesArgument<void (mozilla::TrackBuffersManager::*)(nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>)>::value), already_AddRefed<mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true> > >::Type mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true>::InvokeCallbackMethod<mozilla::TrackBuffersManager, void (aThisVal=0x000000014408d000, aMethod=0x0000000106812440, aValue=0x000000012f7bbd00)(nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>), nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder> const&>(mozilla::TrackBuffersManager*, void (mozilla::TrackBuffersManager::*)(nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>), nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder> const&&&) + 182 at MediaPromise.h:435
frame #6: 0x0000000106822ebf XUL`mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true>::MethodThenValue<mozilla::TrackBuffersManager, void (this=0x000000012b9634a0, aValue=0x000000012f7bbcf8)(nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>), void (mozilla::TrackBuffersManager::*)(mozilla::DemuxerFailureReason)>::DoResolveOrRejectInternal(mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true>::ResolveOrRejectValue const&) + 175 at MediaPromise.h:485
frame #7: 0x00000001066ca5d6 XUL`mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true>::ThenValueBase::DoResolveOrReject(this=0x000000012b9634a0, aValue=0x000000012f7bbcf8) + 214 at MediaPromise.h:385
frame #8: 0x00000001066ca2ec XUL`mozilla::MediaPromise<nsRefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::DemuxerFailureReason, true>::ThenValueBase::ResolveOrRejectRunnable::Run(this=0x000000012e7c1ca0) + 220 at MediaPromise.h:318
frame #9: 0x000000010662da39 XUL`mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run(this=0x000000013b327460) + 281 at TaskDispatcher.h:181
frame #10: 0x000000010675286d XUL`mozilla::MediaTaskQueue::Runner::Run(this=0x000000013b346fc0) + 605 at MediaTaskQueue.cpp:256
frame #11: 0x000000010371e348 XUL`nsThreadPool::Run(this=0x00000001442b0ed0) + 984 at nsThreadPool.cpp:228
frame #12: 0x000000010371e44c XUL`non-virtual thunk to nsThreadPool::Run(this=0x00000001442b0ed8) + 28 at nsThreadPool.cpp:242
frame #13: 0x000000010371ace3 XUL`nsThread::ProcessNextEvent(this=0x0000000143ffce50, aMayWait=false, aResult=0x00000001443c6c6e) + 1971 at nsThread.cpp:867
frame #14: 0x000000010378d3c7 XUL`NS_ProcessNextEvent(aThread=0x0000000143ffce50, aMayWait=false) + 151 at nsThreadUtils.cpp:277
frame #15: 0x0000000103dd41c0 XUL`mozilla::ipc::MessagePumpForNonMainThreads::Run(this=0x0000000141cf3780, aDelegate=0x0000000141cf54e0) + 656 at MessagePump.cpp:326
frame #16: 0x0000000103d40ae5 XUL`MessageLoop::RunInternal(this=0x0000000141cf54e0) + 117 at message_loop.cc:234
frame #17: 0x0000000103d409f5 XUL`MessageLoop::RunHandler(this=0x0000000141cf54e0) + 21 at message_loop.cc:227
frame #18: 0x0000000103d4099d XUL`MessageLoop::Run(this=0x0000000141cf54e0) + 45 at message_loop.cc:201
frame #19: 0x0000000103719059 XUL`nsThread::ThreadFunc(aArg=0x0000000143ffce50) + 329 at nsThread.cpp:360
frame #20: 0x0000000103371621 libnss3.dylib`_pt_root(arg=0x0000000143231840) + 449 at ptthread.c:212
frame #21: 0x00007fff8a7e8268 libsystem_pthread.dylib`_pthread_body + 131
frame #22: 0x00007fff8a7e81e5 libsystem_pthread.dylib`_pthread_start + 176
frame #23: 0x00007fff8a7e641d libsystem_pthread.dylib`thread_start + 13
| Assignee | ||
Comment 1•10 years ago
|
||
Frames may have small discontinuities, which would lead to intervals being created that are less than a frame duration.
Attachment #8632689 -
Flags: review?(gsquelart)
Assignee: nobody → jyavenard
Comment on attachment 8632689 [details] [diff] [review]
Apply fuzz factor when adjusting buffered time ranges.
Review of attachment 8632689 [details] [diff] [review]:
-----------------------------------------------------------------
r+, with or without suggestion (small impact).
::: dom/media/mediasource/TrackBuffersManager.cpp
@@ +1559,5 @@
> TimeInterval(TimeUnit::FromMicroseconds(sample->mTime),
> TimeUnit::FromMicroseconds(sample->GetEndTime()));
> removedIntervals += sampleInterval;
> + maxSampleDuration =
> + std::max(maxSampleDuration, TimeUnit::FromMicroseconds(sample->mDuration));
Why not |if (max < dur) { max = dur }|? This would save a potential assignment in half the cases.
Attachment #8632689 -
Flags: review?(gsquelart) → review+
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
You need to log in
before you can comment on or make changes to this bug.
Description
•