[Zodb-checkins] CVS: ZODB3/Persistence - cPickleCache.c:1.85.8.2
Jeremy Hylton
jeremy at zope.com
Wed Jul 2 19:37:45 EDT 2003
Update of /cvs-repository/ZODB3/Persistence
In directory cvs.zope.org:/tmp/cvs-serv4142
Modified Files:
Tag: zodb33-devel-branch
cPickleCache.c
Log Message:
Fix for assert() failure in GC.
=== ZODB3/Persistence/cPickleCache.c 1.85.8.1 => 1.85.8.2 ===
--- ZODB3/Persistence/cPickleCache.c:1.85.8.1 Tue Jul 1 15:28:11 2003
+++ ZODB3/Persistence/cPickleCache.c Wed Jul 2 18:37:39 2003
@@ -919,6 +919,17 @@
Py_DECREF(self);
return NULL;
}
+ /* Untrack the dict mapping oids to objects.
+
+ The dict contains uncounted references to ghost objects, so it
+ isn't safe for GC to visit it. If GC finds an object with more
+ referents that refcounts, it will die with an assertion failure.
+
+ When the cache participates in GC, it will need to traverse the
+ objects in the doubly-linked list, which will account for all the
+ non-ghost objects.
+ */
+ PyObject_GC_UnTrack((void *)self->data);
self->setklassstate = PyObject_GetAttrString(jar, "setklassstate");
if (self->setklassstate == NULL) {
Py_DECREF(self);
More information about the Zodb-checkins
mailing list