Closed Bug 1638243 Opened 4 years ago Closed 4 years ago

Intermittent Assertion failure: promises->IsEmpty(), at /builds/worker/checkouts/gecko/dom/media/GraphDriver.cpp

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla79
Tracking Status
firefox79 --- fixed

People

(Reporter: karlt, Assigned: karlt)

References

Details

(Keywords: intermittent-failure)

Attachments

(1 file)

Assertion failure: promises->IsEmpty(), at /builds/worker/checkouts/gecko/dom/media/GraphDriver.cpp:537
#01: mozilla::AudioCallbackDriver::~AudioCallbackDriver() [dom/media/GraphDriver.cpp:533]
#02: mozilla::AudioCallbackDriver::Release() [dom/media/GraphDriver.h:560]
#03: mozilla::MediaTrackGraphImpl::OneIterationImpl(long long, long long, mozilla::AudioMixer*) [dom/media/MediaTrackGraph.cpp:1430]
#04: mozilla::GraphRunner::Run() [dom/media/GraphRunner.cpp:114]
#05: nsThread::ProcessNextEvent(bool, bool*) [mfbt/RefPtr.h:314]
#06: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:501]
#07: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:332]
#08: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:291]
#09: nsThread::ThreadFunc(void*) [xpcom/threads/nsThread.cpp:446]
#10: _pt_root [nsprpub/pr/src/pthreads/ptthread.c:204]

https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=302075028&repo=autoland&lineNumber=1314

The crash stack is slightly more intuitive than the assertion stack:
~AudioCallbackDriver()
https://hg.mozilla.org/mozilla-central/annotate/b9feee4f447c/dom/media/GraphDriver.cpp#l537
https://hg.mozilla.org/mozilla-central/annotate/b9feee4f447c/dom/media/GraphDriver.cpp#l533
AudioCallbackDriver::Release()
https://hg.mozilla.org/mozilla-central/annotate/b9feee4f447c/dom/media/GraphDriver.h#l560
MediaTrackGraphImpl::OneIterationImpl() calling SwitchAtNextIteration(nullptr)
https://hg.mozilla.org/mozilla-central/annotate/b9feee4f447c/dom/media/MediaTrackGraph.cpp#l1427
GraphRunner::Run()
https://hg.mozilla.org/mozilla-central/annotate/b9feee4f447c/dom/media/GraphRunner.cpp#l114

Seen only on MacOS, so far.
https://hg.mozilla.org/integration/autoland/rev/b9feee4f447c402f251b5a0647f999ac0bb798df would have made this more frequent, but has since been backed out.

Summary: ittent Assertion failure: promises->IsEmpty(), at /builds/worker/checkouts/gecko/dom/media/GraphDriver.cpp → Intermittent Assertion failure: promises->IsEmpty(), at /builds/worker/checkouts/gecko/dom/media/GraphDriver.cpp

mNextDriver can get a promise on Resume or Suspend.

Looks like there's nothing to remove those if the graph finishes running and mNextDriver is cleared.

The promises are rejected before shutdown down threads so that they don't need
to wait for nested event loops to exit.

Depends on D76806

Blocks: 1642849
No longer blocks: 1625372
Attachment #9151673 - Attachment description: Bug 1638243 reject promises for AudioContextOperations that have not run by graph shutdown r?padenot → Bug 1638243 reject promises for Resume AudioContextOperations that have not run by graph shutdown r?padenot
Pushed by ktomlinson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/121dfca01d6a
reject promises for Resume AudioContextOperations that have not run by graph shutdown r=padenot
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla79
Depends on: 1644647
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: