Brandt Bucher <brandtbuc...@gmail.com> added the comment:
It looks like the GC untracks the None-filled result tuple in untrack_tuples, and it's never re-tracked again. This can also happen if it's filled with atomic values on an early iteration and the GC visits it. Perhaps a simple fix is to call _PyObject_GC_TRACK on the result tuple inside of each zip_next call if it's not tracked anymore? if (!_PyObject_GC_IS_TRACKED(result)) { _PyObject_GC_TRACK(result); } _PyTuple_MaybeUntrack(result); // Worth it? return result; Although I'm not sure how much of a win we're getting from the result tuple reuse here - maybe it's easier to just not do that. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42536> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com