[Tim Peters] >> It looks like ghostifying your "self" triggers self.__del__(). Then >> the __del__ method unghostifies self, which has the side effect of >> moving self to the MRU end of the ring, which in turn means the list >> traversal will visit self *again*. When it does, same thing happens >> all over again, ad infinitum.
[Toby Dickenson] > Not necessaralily ad infinitum. It will only run forever if the > number of __del__-resurrecting objects in the cache is larger than > the cache target size. It's actually that the number of __del__-resurrecting objects *plus* the number of non-ghostifiable objects in cache is larger than the cache target size, right? > Does that fit with your scenario? Similarly <wink>, except that if there's a large number of non-ghostifiable objects (more than the cache target size), then only one __del__-resurrected object is enough to provoke an infinite loop. >> 2. If you need a __del__ method (it's hard to imagine why, since it >> will get called whenever the object is ghostified, and has nothing >> to do with the object's actual lifetime), don't reference any >> persistent objects (and esp. not self) within it. > or 2b as jeremy suggested, put your __del__ on a non-persistent sub > object. Yup. _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )