dbus_shutdown runtime checks

Havoc Pennington hp at redhat.com
Fri Nov 24 02:13:16 PST 2006


10function wrote:
> But replacing the session bus(DBUS_BUS_SESSION) with system bus (DBUS_BUS_SYSTEM) leads to the following warning :
> process 8123: dbus_shutdown() called but connections were still live. This probably means the application did not drop allits references to bus connections.
>   D-Bus not built with -rdynamic so unable to print a backtrace
> Abandon
> 
> I can't figure out why , Is there something i missed ?

Thanks for the small compilable test case. It appears the problem is 
that in dbus-connection.c if a bus address has no "guid" property (as 
the default system bus address does not), we don't record the connection 
in the hash table of shared connections. Thus on shutdown in 
dbus-connection.c:shared_connections_shutdown we don't disconnect the 
connection, resulting in a leak.

The fix is pretty simple; keep a list of shared connections that lack a 
guid and be sure each shared connection is either in the list or in the 
hash.

> On the other hand, i tried to build with the backtrace mechanism as proposed in the error message but my attemps failled. Could you explain how this could be done ? Could it be added to the configure options in a future release ?

It should happen automatically. If you're on a platform where it should 
work and it doesn't, perhaps the configure check is broken in some way. 
Let us know your platform details.

Havoc



More information about the dbus mailing list