After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 772980 - gnome-shell hangs if pulseaudio is not responsive
gnome-shell hangs if pulseaudio is not responsive
Status: RESOLVED NOTGNOME
Product: mutter
Classification: Core
Component: general
3.22.x
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
Depends on:
Blocks:
 
 
Reported: 2016-10-15 14:35 UTC by Tanu Kaskinen
Modified: 2016-11-21 10:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
backtrace during the hang (6.87 KB, text/plain)
2016-10-15 14:35 UTC, Tanu Kaskinen
Details

Description Tanu Kaskinen 2016-10-15 14:35:16 UTC
Created attachment 337758 [details]
backtrace during the hang

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 in a synchronous manner. That's bad, I think the blip should be played asynchronously.

Since libmutter seems to be the culprit here, maybe gnome-shell isn't the right component for this bug report, but since I experience the issue in gnome-shell, it's perhaps good to make the gnome-shell developers aware of the issue by opening the bug against gnome-shell first.

I'm using Debian testing. Package versions:
gnome-shell 3.22.0-1+b1
libmutter0i 3.22.0-1
Comment 1 Jonas Ådahl 2016-11-21 05:23:48 UTC
Mutter uses libcanberra, AFAICS the function used to play the sound should be asynchronous, thus the problem is either in libcanberra or the pulseaudio library, and not mutter.
Comment 2 Tanu Kaskinen 2016-11-21 10:45:11 UTC
Oh, you're right. I assumed that the word "full" in "ca_context_play_full" meant that the function plays the sample in full before returning, but that's not the case. ca_context_play_full() is supposed to be asynchronous, but somehow it gets stuck. Looks like a libcanberra bug, then. Reported here: https://bugs.freedesktop.org/show_bug.cgi?id=98806