GNOME Bugzilla – Bug 302296
gailcell/gailtreeview lifecycle needs rework
Last modified: 2011-12-30 07:11:07 UTC
examine the code. Note that currently we attempt to maintain a 'flyweight' cache of objects which we don't hold persistent refs to, and rely on gobject weak refs which notify us on destroy. There are two problems - for one, because we call a lot of gtktreeview/gtktreemodel api and emit signals while manipulating our cache of flyweight references, it's very easy for objects in our list to die while we're messing with them or traversing the list. Even if we keep track of a flag in the cell_info indicating that a cell has died, we may continue to operate on a cell (AtkObject instance) in the destroy handler, which can result in calling atk_object API on an object which has been unreffed already; this is unsafe and in fact even the basic GType macros can fail when called on destroyed GObject references. Obviously architectural changes are required.
BTW I don't think there's a need to mirror this in Sun's internal bug tracker until/unless outward symptoms manifest. See bug 163583 which has been patched with a stopgap measure.
Should be mostly addressed by Benjamins recent work