The enum_type_object type inherits from PyLong_Type which is not tracked
by the GC. Instances doesn't have to be tracked by the GC: remove the
Py_TPFLAGS_HAVE_GC flag.
The Python C API documentation says:
"To create a container type, the tp_flags field of the type object
must include the Py_TPFLAGS_HAVE_GC and provide an implementation of
the tp_traverse handler."
https://docs.python.org/dev/c-api/gcsupport.html
The new exception was introduced in Python 3.11 by:
https://github.com/python/cpython/issues/88429
Unfortunately due to optimised build of Python3 libraries and executable I got only partial stack from [http://clang.llvm.org/docs/AddressSanitizer.html], however digging into and reducing my code I tracked it down to be issue with `boost/libs/python/src/object/enum.cpp`.
It has to bits that leak (and comment mentioning there is one):
PyObject *mod = PyObject_GetAttrString( self_, "__module__");
Leaks reference, as it never decreases it.
It also stores a new string object under object's `name` that ref count never gets decremented.
That commit fixes both issues.
from Python's built-in int type. However, the appearance of FILE*
raised questions about using extensions compiled with Visual C++ 8
with a Python compiled with Visual C++ 7.1.
[SVN r32301]