Hi, The issue here is that the gobject is not unregistered from dbus.
Once you register it it will be unregistered when the last unref of the dbus connection is done. However, while hide() unrefs the connection, it is not guaranteed to be the last to do so, so the object is left registered. Trying to register again causes a fatal error as there is already an object registered at the path. It is possible to cause an unregister, and I tried doing this from hide(), but this causes a segfault on the next show. I suspect this is because there is a FIXME in the dbus-glib code in the unregister callback, and the callback does nothing. I suspect this leaves the bus in an inconsistent state, leading to the crash. I haven't confirmed that this is the case, or tried to work out whether it was my fault. Another option is to not unregister the object on hide(), and then only register it on show() if there was no previous show(). However, this leaves the hide() ineffectual it seems, with the server still showing up in the indicator. Perhaps you have a fix in mind, but I wanted to share my insights from trying to debug this. Thanks, James -- Client crash on second indicate_server_show https://bugs.launchpad.net/bugs/351537 You received this bug notification because you are a member of Indicator Applet Developers, which is the registrant for Indicator Applet. Status in Indicator Applet: Confirmed Bug description: After calling show(), hide(), and then show again, the client will crash. _______________________________________________ Mailing list: https://launchpad.net/~dx-team Post to : [email protected] Unsubscribe : https://launchpad.net/~dx-team More help : https://help.launchpad.net/ListHelp

