У меня есть библиотека C ++, которая использует обратные вызовы Python. Обратный вызов, т.е. PyObject *, хранится в объекте класса UnaryFunction, и конструктор Py_INCREFs его. Деструктор Py_XDECREFs это. Это проблема. На этом DECREF переводчик ошибается.
Мое решение состоит в том, чтобы просто НЕ УКАЗАТЬ это, но это кажется неправильным.
Как правильно использовать счетчик ссылок для функции в INC / DEC и, что более важно, почему интерпретатор пытается собрать тело функции, когда есть другие живые ссылки на него?
Изменить: В Linux вместо segfault я получаю ошибку подтверждения, которая говорит:
python: Objects/funcobject.c:442: func_dealloc: Assertion 'g->gc.gc_refs != (-2)' failed.