Hi Thomas, I was able to verify the general callback closure mechanism within pygobject and used by Gtk.Builder.connect_signals is leaking references. See: https://bugzilla.gnome.org/show_bug.cgi?id=685598
Also attached to this ticket is a unittest showing how to verify reference counts in a unittest context which might be of use. What is actually leaking in this case is the dictionary holding the callback, which in turn keeps the callback around. -Simon On Thu, Oct 4, 2012 at 9:35 AM, Thomas Bechtold <[email protected]> wrote: > Hi Simon, > > thanks for the detailed answer! See comments bellow. > > On Mi, 2012-10-03 at 01:17 -0700, Simon Feltman wrote: >> 1) Don't rely on __del__ for cleanup, __del__ should generally be >> avoided as it doesn't work like a destructor in most languages, add an >> explicit method to cleanup the AddressInfo instance, clear out any >> held widgets by setting them to None, also issue the dbus disconnect >> within this and even disconnect signals if possible. > > Disconnecting signals produces segfaults. See > https://bugzilla.gnome.org/show_bug.cgi?id=685387 . > > Setting the Widget to None works fine in the simple example. In d-feet, > I try to use GtkBuilder (with Glade) when possible. So attached is > another example (button-signal-gtkbuilder.py) where the solution "set > all Widgets to None" does no longer work. The example loads the widgets > from an ui xml definition and connects the signals with > gtk_builder_connect_signals(). > The instances are never collected by python's gc. > > Cheers, > > Tom _______________________________________________ python-hackers-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/python-hackers-list
