changed(): the refcount on self wasn't incremented when self was placed
in a new tuple. If the chain of stuff triggered by the subsequent PyEval_CallObject() happened to trigger cyclic gc, then there were more gc-visible pointers to self than could be accounted for by self->ob_refcnt, and in a debug build Python died with an assertion failure. The code has always been this way, but Jeremy points out that it didn't matter in previous versions of ZODB, because "self" was always an ExtensionClass instance before, and gc ignored those.
Showing
Please register or sign in to comment