Closed Bug 1861709 Opened 2 years ago Closed 2 years ago

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

Categories

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

defect

Tracking

()

RESOLVED FIXED
121 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox119 --- unaffected
firefox120 --- unaffected
firefox121 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: karlt)

References

(Regression)

Details

(Keywords: assertion, intermittent-failure, regression, Whiteboard: [retriggered])

Attachments

(4 files)

Filed by: ncsoregi [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=434050042&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/NtBpXfvZTTyQZmXeGyPovQ/runs/0/artifacts/public/logs/live_backing.log


[task 2023-10-27T14:15:04.418Z] 14:15:04     INFO - TEST-START | dom/media/webrtc/tests/mochitests/test_getUserMedia_mediaStreamConstructors.html
[task 2023-10-27T14:15:04.496Z] 14:15:04     INFO - GECKO(3067) | TEST DEVICES: No test device found in media.audio_loopback_dev, using fake audio streams.
[task 2023-10-27T14:15:04.497Z] 14:15:04     INFO - GECKO(3067) | TEST DEVICES: No test device found in media.video_loopback_dev, using fake video streams.
[task 2023-10-27T14:15:04.525Z] 14:15:04     INFO - GECKO(3067) | Assertion failure: fallback->InIteration(), at /builds/worker/checkouts/gecko/dom/media/GraphDriver.cpp:784
[task 2023-10-27T14:15:04.529Z] 14:15:04     INFO -  Initializing stack-fixing for the first stack frame, this may take a while...
[task 2023-10-27T14:15:28.971Z] 14:15:28     INFO - GECKO(3067) | #01: mozilla::AudioCallbackDriver::SetStreamName(nsTSubstring<char> const&) [dom/media/GraphDriver.cpp:784]
[task 2023-10-27T14:15:28.971Z] 14:15:28     INFO - GECKO(3067) | #02: mozilla::MediaTrackGraphImpl::RunMessagesInQueue() [dom/media/MediaTrackGraph.cpp:1332]
[task 2023-10-27T14:15:28.971Z] 14:15:28     INFO - GECKO(3067) | #03: mozilla::MediaTrackGraphImpl::OneIterationImpl(long long, long long, mozilla::AudioMixer*) [dom/media/MediaTrackGraph.cpp:1588]
[task 2023-10-27T14:15:28.972Z] 14:15:28     INFO - GECKO(3067) | #04: mozilla::GraphRunner::Run() [dom/media/GraphRunner.cpp:139]
[task 2023-10-27T14:15:28.972Z] 14:15:28     INFO - GECKO(3067) | #05: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1193]
[task 2023-10-27T14:15:28.972Z] 14:15:28     INFO - GECKO(3067) | #06: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:480]
[task 2023-10-27T14:15:28.972Z] 14:15:28     INFO - GECKO(3067) | #07: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:301]
[task 2023-10-27T14:15:28.973Z] 14:15:28     INFO - GECKO(3067) | #08: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:346]
[task 2023-10-27T14:15:28.973Z] 14:15:28     INFO - GECKO(3067) | #09: nsThread::ThreadFunc(void*) [xpcom/threads/nsThread.cpp:372]
[task 2023-10-27T14:15:29.171Z] 14:15:29     INFO - GECKO(3067) | #10: _pt_root [nsprpub/pr/src/pthreads/ptthread.c:204]
[task 2023-10-27T14:15:29.172Z] 14:15:29     INFO - GECKO(3067) | #11: _pthread_start [/usr/lib/system/libsystem_pthread.dylib + 0x6109]
[task 2023-10-27T14:15:29.172Z] 14:15:29     INFO - GECKO(3067) | [Parent 3067, IPC I/O Parent] WARNING: Call to Send() failed: file /builds/worker/checkouts/gecko/ipc/glue/NodeChannel.cpp:198

Hi Karl! Can you please take a look at this? Although this backfill range and retriggers don't show Bug 1860954 as the culprit, I think it might just be the cause for this and the 2 other assertion failure bugs that I've put in the "see also" section, but I would like to get your opinion on this.
Thank you!

Flags: needinfo?(karlt)
See Also: → 1861805, 1861495
Whiteboard: [retriggered]
Blocks: 1862070

The AudioCallbackDriver transitions to ThreadRunning() while the fallback driver may still be in one of its iterations.

This is inconsistent with "If the fallback driver is active, this returns false" documented for AudioCallbackDriver::ThreadRunning().

Both are inconsistent with "GraphDriver's thread has started and the thread is running" documented for the overridden GraphDriver::ThreadRunning(). MediaTrackGraphImpl expects AudioCallbackDriver::ThreadRunning() to return true even when running from the fallback driver, though the difference in behavior is not detected there.

Flags: needinfo?(karlt)
Assignee: nobody → karlt
Status: NEW → ASSIGNED

AudioCallbackDriver will have a fallback driver thread running when in a
fallback driver iteration and sometimes also has an audio stream callback
thread running concurrently.

GraphInterface::InDriverIteration() now always checks aDriver->OnThread().
In the case of a fallback driver, this changes the check a little as
OnThread() is called on the AudioCallbackDriver instead of the fallback
driver, but I expect either IterationResult OneIteration() or its
IterationResult should be on the stack when asserting InIteration().

Depends on D192432

AudioCallbackDriver can have a thread running with a fallback driver or
an audio stream callback.

Asserts are using !ThreadRunning() and so are made stricter by this patch.

Depends on D192434

Thank you for the retriggers.

This showed up due to a new assertion introduced in https://hg.mozilla.org/mozilla-central/rev/899c4a0b9085b8781713f9fd29a5fdd91b55ade1#l1.275

Bug 1861805 and bug 1861495 are different to this one and I'm still investigating those.

Keywords: regression
Regressed by: 1860954
See Also: 1861805, 1861495

Set release status flags based on info from the regressing bug 1860954

Pushed by ktomlinson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/54251c8f8d09 permit AudioCallbackDriver::ThreadRunning() in FallbackWrapper::InDriverIteration() asserts r=pehrsons https://hg.mozilla.org/integration/autoland/rev/0ea21c7c9ab7 replace AudioCallbackDriver::ThreadRunning() assertions that mean to test mAudioStreamState r=pehrsons
Pushed by ktomlinson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/5215ac06e712 align AudioCallbackDriver::ThreadRunning() behavior with its overridden GraphDriver method r=pehrsons
Duplicate of this bug: 1862070
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: