I doubt anyone will know the answer to this, as it's in 12+ year old code in the GTK2 module, but the destroy method (now renamed to _destruct) was explicitly checking that it received exactly zero args before calling gtk_object_destroy. Any idea why? Is there a situation in which destroy() might have been called with arguments, such that it shouldn't actually destroy anything?
I've removed the check, and now GTK2 apps correctly clean up their underlying objects when they're destroyed. But I'm hoping this hasn't reintroduced an old problem somewhere.
ChrisA