Подтвердить что ты не робот

Известны ли ложные срабатывания проблемы с Valgrind?

Есть ли какие-либо известные ложные срабатывания с Valgrind? Я получаю "Условный переход или перемещение зависит от неинициализированного значения (значений)" с помощью функции fmemopen, записывающей на C и компиляции с GCC. Могу ли я быть уверенным в этом?

EDIT: Известны ли проблемы, которые не находятся в файлах подавления? Есть ли в программе какие-то вещи, которые не являются ошибками, но Valgrind скажет, что они есть? Если есть известные проблемы, список будет приятным.

4b9b3361

Ответ 1

Да, с Valgrind есть ложные срабатывания, поэтому у него есть файлы подавления для конкретных версий glibc и gcc, например. Ложные срабатывания могут возникать, если вы используете более старый valgrind с более новыми gcc и glibc, то есть valgrind 3.3 с glibc 2.9.

Сказав это, вам все равно нужно изучить проблему и выяснить, действительно ли она ложно положительна (если это окажется так, вы можете написать подавление для нее самостоятельно) или это реальная ошибка в вашей программы.

Невозможно быстро и просто сказать, что здесь происходит, но в этом случае я подозреваю, что вы передаете неинициализированное значение из кода в код библиотеки. Попробуйте вариант Valgrind --track-origins=yes. Он покажет, откуда взялось неинициализированное значение. Если это ваш код, возможно, вы должны его инициализировать. Если это внутри библиотеки, это могут быть ложные положительные или все еще плохие значения аргументов вызова библиотеки, которые могут вызвать ее, поэтому проверьте их.

Ответ 2

Valgrind поставляется с некоторым подавлением ошибок по умолчанию, но они ни в коем случае не охватывают все библиотеки.

Средства проверки ошибок обнаруживают многочисленные проблемы в базовых библиотеках, таких как библиотека GNU C, и клиентские библиотеки X11, которые предварительно устанавливаются в вашей системе GNU/Linux. Вы не можете легко исправить это, но вы не хотите видеть эти ошибки (и да, их много!) Итак, Valgrind читает список ошибок для подавления при запуске. Файл настройки по умолчанию создается с помощью. /configure script, когда система построена.

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

Ответ 3

Не было ли причиной SSL для Debian исправление некоторых ложных срабатываний с помощью Valgrind?