Действительно ли нормально, что под управлением Python под valgrind показывает много ошибок с памятью?

Проверьте представление Ander здесь:

http://channel9.msdn.com/pdc2008/TL16/

HTM

17
задан bialix 5 October 2009 в 10:25
поделиться

5 ответов

Вы можете попробовать использовать файл подавления , который поставляется с исходным кодом Python

Чтение Python Valgrind README тоже неплохая идея!

22
ответ дан 30 November 2019 в 13:05
поделиться

Да, это типично. В больших системах память часто остается не освобожденной, и это нормально, если она является постоянной величиной и не пропорциональна истории работы системы. Интерпретатор Python попадает в эту категорию.

Возможно, вы можете отфильтровать вывод valgrind, чтобы сосредоточиться только на выделениях, сделанных в вашем расширении C?

0
ответ дан 30 November 2019 в 13:05
поделиться

Это довольно часто встречается в любой большой системе. Вы можете использовать систему подавления Valgrind , чтобы явно подавить предупреждения, которые вас не интересуют.

2
ответ дан 30 November 2019 в 13:05
поделиться

There is another option I found. James Henstridge has custom build of python which can detect the fact that python running under valgrind and in this case pymalloc allocator is disabled, with PyObject_Malloc/PyObject_Free passing through to normal malloc/free, which valgrind knows how to track.

Package available here: https://launchpad.net/~jamesh/+archive/python

0
ответ дан 30 November 2019 в 13:05
поделиться

Самый правильный вариант - сообщить Valgrind, что он должен перехватывать функции распределения Python. Вы должны исправить valgrind / coregrind / m_replacemalloc / vg_replace_malloc.c, добавив новые перехватчики для PyObject_Malloc, PyObject_Free, PyObject_Realloc, например:

ALLOC_or_NULL(NONE,                  PyObject_Malloc,      malloc);

(обратите внимание, что soname для функций распределения пользователей должно быть NONE )

1
ответ дан 30 November 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: