There are 2 bugs here. The first one is due to one of our patches to
implement a different session dialog, which will cause gnome-session to
crash if shutdown is not available. In particular, this bit of gnome-
session/gsm-logout-dialog.c:
switch (logout_dialog->priv->default_response) {
case GSM_LOGOUT_RESPONSE_LOGOUT:
info_text = ngettext ("You will be automatically logged "
"out in %d second.",
"You will be automatically logged "
"out in %d seconds.",
seconds);
break;
case GSM_LOGOUT_RESPONSE_SHUTDOWN:
info_text = ngettext ("This system will be automatically "
"shut down in %d second.",
"This system will be automatically "
"shut down in %d seconds.",
seconds);
break;
case GTK_RESPONSE_CANCEL:
info_text = _("You are currently logged in as \"%s\".\n");
****GOES WRONG HERE****
break;
default:
g_assert_not_reached ();
}
if (session_type == NULL) {
GsmConsolekit *consolekit;
consolekit = gsm_get_consolekit ();
session_type = gsm_consolekit_get_current_session_type
(consolekit);
g_object_unref (consolekit);
}
if (g_strcmp0 (session_type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW)
!= 0) {
char *name, *buf, *buf2;
name = g_locale_to_utf8 (g_get_real_name (), -1, NULL, NULL,
NULL);
if (!name || name[0] == '\0' || strcmp (name, "Unknown") == 0) {
name = g_locale_to_utf8 (g_get_user_name (), -1 , NULL,
NULL, NULL);
}
if (!name) {
name = g_strdup (g_get_user_name ());
}
buf = g_strdup_printf (_("You are currently logged in as
\"%s\"."), name);
buf2 = g_strdup_printf (info_text, seconds); ****CRASHES
HERE****
markup = g_markup_printf_escaped ("<i>%s</i>", g_strconcat
(buf, "\n", buf2, NULL));
g_free (buf);
g_free (buf2);
g_free (name);
I think that looks like the first bug.
The default_response is earlier set to GTK_RESPONSE_CANCEL (when it
would normally be GTK_RESPONSE_SHUTDOWN) because this fails:
if (!gsm_logout_supports_shutdown (logout_dialog)) {
gtk_widget_set_sensitive (tile, FALSE);
/* If shutdown is not available, let's just fallback
* on cancel as the default action. We could fallback
* on reboot first, then suspend and then hibernate
* but it's not that useful, really */
logout_dialog->priv->default_response =
GTK_RESPONSE_CANCEL;
}
The reason for this is because in gsm_consolekit_can_stop, it calls
org.freedesktop.Consolekit.Manager.CanStop, which returns with a
permissions error, and that looks like the second bug.
--
[karmic] shutdown menu immediately logs out
https://bugs.launchpad.net/bugs/399531
You received this bug notification because you are a member of Ubuntu
Desktop Bugs, which is subscribed to gnome-session in ubuntu.
--
desktop-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/desktop-bugs