In our patched version of glib2.0-2.31.18, that crash occurs on the first line of g_dbus_proxy_call_internal():
> g_return_if_fail (G_IS_DBUS_PROXY (proxy));
so it looks like we're passing a broken pointer in as the proxy argument there. Following the trace back one step, this proxy pointer is the same one that libindicate/listener.c's indicator_listener_display() passes to g_dbus_proxy_call(). So it looks like the IndicateListenerServer.proxy pointer passed into that function is bad.
My guess is that priv->server.proxy isn't getting updated when the proxy is destroyed. proxy_destroyed() updates its "priv->proxies" array but does nothing for "priv->server.proxy".
In our patched version of glib2.0-2.31.18, that crash occurs on the first line of g_dbus_ proxy_call_ internal( ):
> g_return_if_fail (G_IS_DBUS_PROXY (proxy));
so it looks like we're passing a broken pointer in as the proxy argument there. Following the trace back one step, this proxy pointer is the same one that libindicate/ listener. c's indicator_ listener_ display( ) passes to g_dbus_ proxy_call( ). So it looks like the IndicateListene rServer. proxy pointer passed into that function is bad.
My guess is that priv->server.proxy isn't getting updated when the proxy is destroyed. proxy_destroyed() updates its "priv->proxies" array but does nothing for "priv-> server. proxy".