GNOME Bugzilla – Bug 745673
libpam-gnome-keyring blocks signals when the client fails to connect to the daemon.
Last modified: 2015-03-05 12:17:28 UTC
Created attachment 298630 [details] [review] Make sure not to block The following commit introduced a regression: https://github.com/GNOME/gnome-keyring/commit/2ca51a0aef5b1bc41f2e71d2b65edc8478dab69d#diff-d53c4eabb39a8d87b804f97577ee83cdR395 In the case where (res != GKD_CONTROL_RESULT_OK), calls to sigaction (SIGPIPE, &ignpipe, &oldpipe); and sigaction (SIGCHLD, &defchld, &oldchld); are not followed by sigaction (SIGCHLD, &oldchld, NULL); and sigaction (SIGPIPE, &oldpipe, NULL); https://github.com/GNOME/gnome-keyring/blob/master/pam/gkr-pam-client.c#L421 Blocking SIGCHLD is problematic in particular for the MDM display manager which slave relies on that signal to acknowledge the death of its greeter.. thus resulting in an inability to log in. I attached a patch which fixes this issue by adding the missing calls to the if() statement. Otherwise, on IRC Stef mentioned it might be nice to use a goto in order to factorize code for common return paths, that might be better even.
Review of attachment 298630 [details] [review]: Changed to use goto, and then committed to git master.
Thanks Stef.