Bug 98806

Summary: ca_context_play_full() blocks if pulseaudio isn't responsive
Product: libcanberra Reporter: Tanu Kaskinen <tanuk>
Component: UnspecifiedAssignee: Lennart Poettering <lennart>
Status: NEW --- QA Contact:
Severity: normal    
Priority: medium CC: tanuk
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: gnome-shell backtrace

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.