Closed Bug 1320561 Opened 8 years ago Closed 7 years ago

Crash in `anonymous namespace''::handle_channel_layout

Categories

(Core :: Audio/Video: cubeb, defect, P1)

Unspecified
Windows 10
defect

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox-esr52 --- wontfix
firefox54 --- wontfix
firefox55 --- fixed

People

(Reporter: calixte, Assigned: kinetik)

References

(Blocks 1 open bug)

Details

(Keywords: crash, Whiteboard: [clouseau])

Crash Data

This bug was filed from the Socorro interface and is 
report bp-2b30eada-0c88-493b-b854-1c8ea2161127.
=============================================================

There are 2 crashes in nightly with build-id 20161126030207 and in analyzing the backtrace they could be a regression introduced by patch https://hg.mozilla.org/mozilla-central/rev?node=4d48f8dd5d4ffc2afc2bf8d92e95be075401b873 to fix bug 1319623.
Flags: needinfo?(kinetik)
Bug 1319623 was Linux (PulseAudio backend) only.  The patch touches the Windows (WASAPI backend) code, but only to update a comment and a log message.

Looking at the crash, this bug has existed for a while, and looking for more reports with similar signatures reveals that we've had crashes like this before, e.g. bp-a1afc792-44f8-4f7a-a38b-c1fee2161126 occurs in 51.0b3.  The regression range may stretch back to bug 1251502, where capture was added originally (the handle_channel_layout part of the bug exists there), but it's possible this was only exposed later by changes to stream initialization error handling.

The crash occurs because we're attempting to create a capture stream and try to access the render stream client, which is null.  Gecko (AFAIK) never creates capture-only streams (although libcubeb's API theoretically supports capture-only), so my guess is that we failed to create the render stream and then proceeded with the attempt to create the capture stream.  This might happen if there are no render devices available.  It should be easy to test that theory by disabling playback devices in the Sound control panel.

I think there's actually two bugs here:
- handle_channel_layout is using the wrong IAudioClient for capture streams (it always uses the render client)
- if we're creating a full-duplex (render + capture) stream, we should fail if the render stream creation fails rather than proceeding with creation of the capture stream
Assignee: nobody → kinetik
Status: NEW → ASSIGNED
Flags: needinfo?(kinetik)
Component: Audio/Video → Audio/Video: cubeb
Rank: 15
Priority: -- → P1
Whiteboard: [clouseau]
This was fixed by ac8496de in upstream libcubeb.
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Has that fix landed on m-c yet? It's difficult tracking the status properly if it hasn't actually been fixed in Firefox yet. Especially because we had an uplift to Beta yesterday. (This is why I've asked in other "Fixed in upstream cubeb" bugs that we wait to resolve until the fix actually hits m-c)
Flags: needinfo?(kinetik)
The fix came in with bug 1366707, 22 days ago.
Depends on: 1366707
Flags: needinfo?(kinetik)
Thanks for the confirmation.
Target Milestone: --- → mozilla54
Target Milestone: mozilla54 → mozilla55
You need to log in before you can comment on or make changes to this bug.