Comment 7 for bug 953562

Revision history for this message
Allison Karlitskaya (desrt) wrote : Re: hud-service crashed with SIGSEGV in menuproxy_build_cb()

That said, there is this code on the other side:

        /* NOTE: We're not using any other variables before checking
           the result because they could be destroyed and thus invalid */
        GDBusProxy * proxy = g_dbus_proxy_new_finish(res, &error);
        if (error != NULL) {
                g_warning("Unable to get menu proxy: %s", error->message);
                g_error_free(error);
                return;
        }

        /* If this wasn't cancelled, we should be good */
        DbusmenuClient * client = DBUSMENU_CLIENT(user_data);

so even though the client may not be around, the callback should return before attempting to deal with the client.

The cancellable is cancelled from the dispose().

It seems that it is not possible for multiple concurrent calls to get stacked (ie: and the cancellable overwritten with a new one) because of this check:

                /* Check to see if we're already building one */
                if (priv->menuproxy_cancel == NULL) {
                        priv->menuproxy_cancel = g_cancellable_new();

                        g_dbus_proxy_new(priv->session_bus,