On Mon, Dec 31, 2012 at 9:55 AM, Nils Bruin <nbr...@sfu.ca> wrote: > On Dec 31, 9:45 am, Simon King <simon.k...@uni-jena.de> wrote: > > > The difference between the "del A[1]" and "A.__delitem__(1)" might > only be > > > the fact that in the latter case (where more fucntions calls are > performed) > > > a gc is triggered whereas its not in the first case, that's just a wild > > > guess though. > > > > That could be it. A garbage collection can (IIRC) occur at any function > > call. I was not aware that "del A[1]" would avoid that function call. > > I don't think it guarantees that. It just happens to in this case. The > construction of the tuple that is the key to be looked up can already > trigger a GC. The proper solution for the particular issue here seems > to be that Cython should generate appropriate track/untrack calls as > mandated by http://docs.python.org/2/c-api/gcsupport.html . Obviously > it happens somewhere, they should just make sure that (at the very > least), weakrefs are cleared after the object is untracked. >
Curiously, we don't mark our objects as tracked or untracked in the constructor or destructor respectively in Cython at all. Hmm... > The other issue is avoiding deletion of non-weakrefs in > TripleDictEraser (basic, atomic objects are fine, but objects that > could hold references to yet other objects are not, as discussed > above). > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To post to this group, send email to sage-devel@googlegroups.com. > To unsubscribe from this group, send email to > sage-devel+unsubscr...@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-devel?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To post to this group, send email to sage-devel@googlegroups.com. To unsubscribe from this group, send email to sage-devel+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel?hl=en.