Bug 98806 - ca_context_play_full() blocks if pulseaudio isn't responsive
Summary: ca_context_play_full() blocks if pulseaudio isn't responsive
Status: NEW
Alias: None
Product: libcanberra
Classification: Unclassified
Component: Unspecified (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Lennart Poettering
QA Contact:
Depends on:
Reported: 2016-11-21 10:43 UTC by Tanu Kaskinen
Modified: 2016-11-21 10:43 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:

gnome-shell backtrace (6.87 KB, text/plain)
2016-11-21 10:43 UTC, Tanu Kaskinen

Description Tanu Kaskinen 2016-11-21 10:43:23 UTC
Created attachment 128100 [details]
gnome-shell backtrace

Originally reported on Gnome's bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=772980

How to reproduce:

Run pulseaudio in gdb and stop pulseaudio execution so that the pulseaudio process stays alive, but doesn't respond to any client requests. All client operations get a timeout after 30 seconds in this state.

Open gnome-terminal and press tab. Normally that should cause a short blip sound, but since pulseaudio is stopped, no sound is expected in this case.

The problem is that gnome-shell hangs for 30 seconds. The backtrace (attached) shows that libmutter is playing the blip sound using ca_context_play_full(). ca_context_play_full() is supposed to be asynchronous, but it nevertheless blocks in this situation.

It's very annoying when this happens while debugging pulseaudio.

libcanberra version: 0.30-3 (Debian testing)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.