STINNER Victor <vstin...@python.org> added the comment:
> I don't understand how the function ended up with func_code=NULL. That > shouldn't be a valid function to call, IMO. Do you have any info on how the > function ended up in that state? It doesn't seem possible to create a function with func_code=NULL, nor to set func_code to NULL. func_code can be be set to NULL by func_clear() which is called by func_dealloc(). I bet that func_clear() has been called since most func fields are set to NULL, which is consistent with: static int func_clear(PyFunctionObject *op) { Py_CLEAR(op->func_code); Py_CLEAR(op->func_globals); Py_CLEAR(op->func_module); Py_CLEAR(op->func_name); Py_CLEAR(op->func_defaults); Py_CLEAR(op->func_kwdefaults); Py_CLEAR(op->func_doc); Py_CLEAR(op->func_dict); Py_CLEAR(op->func_closure); Py_CLEAR(op->func_annotations); Py_CLEAR(op->func_qualname); return 0; } The question is how is it possible that a deallocated function is still accessed? It smells like a borrowed reference somewhere in the call chain. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue38006> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com