Hello Release Team, I'd like to request a hardcode freeze break for https://gitlab.gnome.org/GNOME/mutter/merge_requests/474. The MR has already been approved by the maintainer.
The MR contains a fix for a deadlock that can be triggered when changing the volume in Gnome Shell. If this issue is triggered the shell will be completely blocked and there is no easy way to unblock/restart it. In Ubuntu we already have several reports about this [1]). Thanks, [1] https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1817546 -- Andrea Azzarone
From b90be286a9f032cd7d0e6e44cc454a7db99e609a Mon Sep 17 00:00:00 2001 From: Andrea Azzarone <[email protected]> Date: Mon, 4 Mar 2019 19:37:09 +0000 Subject: [PATCH] sound-player: Don't deadlock in finish_cb The function finish_cb can be called as a result of a call to ca_context_cancel in cancelled_cb. This will result in a deadlock because, as per documentation, g_cancellable_disconnect cannot be called inside the cancellable handler. It is possible to detect if the call to finish_cb is caused by ca_context_cancel checking if error_code == CA_ERROR_CANCELED. To avoid the deadlock we should call g_signal_handler_disconnect instead g_cancellable_disconnect if this is the case. https://gitlab.gnome.org/GNOME/mutter/merge_requests/474 --- src/core/meta-sound-player.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/meta-sound-player.c b/src/core/meta-sound-player.c index ab934781a..8ef403936 100644 --- a/src/core/meta-sound-player.c +++ b/src/core/meta-sound-player.c @@ -117,7 +117,11 @@ finish_cb (ca_context *context, { MetaPlayRequest *req = user_data; - g_cancellable_disconnect (req->cancellable, req->cancel_id); + if (error_code != CA_ERROR_CANCELED) + g_cancellable_disconnect (req->cancellable, req->cancel_id); + else if (req->cancellable != NULL && req->cancel_id != 0) + g_signal_handler_disconnect (req->cancellable, req->cancel_id); + meta_play_request_free (req); } -- 2.20.1
_______________________________________________ [email protected] https://mail.gnome.org/mailman/listinfo/release-team Release-team lurker? Do NOT participate in discussions.
