Проверка переполнения буфера для Boehm GC

Я использую Boehm GC и valgrind.

Но похоже, что valgrind не может обнаружить переполнение в буферах с GC_malloc.

Кто-нибудь знает какие-либо инструменты, которые могут обнаруживать переполнение буфера для Boehm GC?

Программист? Ваш код должен проверять пределы буфера перед записью в этот буфер, а не полагаться на инструмент, который поймает его за вас.
И тогда не было бы нужды в таких инструментах, как Valgrind, Boehm и др.? Добро пожаловать в реальный мир.
Boehm GC доступен только для Linux, верно? Так что никакие инструменты Windows не соответствуют вашим критериям.
Boehm компилирует для Windows...

Ответы (2)

Наш инструмент CheckPointer может делать то, что вы хотите.

Вы конкретно не сказали, как valgrind потерпела неудачу, только то, что это произошло. Известно, что valgrind не может обнаруживать определенные виды ошибок доступа к памяти. Он, конечно, не может обнаружить переполнение буфера для буфера внутри структуры или буфера, выделенного в локальном пространстве стека, потому что он ничего не знает о размере этих буферов. Область вокруг буфера по определению является действительным пространством данных, поэтому доступ является «действительным» с точки зрения valgrind, даже если он находится за пределами буфера.

Напротив, CheckPointer читает ваш исходный код C и собирает информацию о типах данных (и, следовательно, их размерах). Это дает ему ключевую информацию, необходимую для этого обнаружения. После сбора информации о типе он обрабатывает код для отслеживания ошибок доступа к памяти. Он будет ловить вышеуказанные ошибки и множество других.

CheckPointer в настоящее время доступен только для C.

Это продукт моей компании, так что не принимайте это как рекомендацию. Я просто документирую, что он существует и, по-видимому, соответствует вашим требованиям.

Если вы определите GC_DEBUG до того #include "gc.h", как он выполнит некоторую проверку, один раз для каждой коллекции он проверит известные объекты, чтобы увидеть, выглядят ли они забитыми или нет. Я думаю...

ссылки:

https://stackoverflow.com/q/4532825/32453

https://github.com/ivmai/bdwgc/blob/master/tests/smash.c

https://github.com/ivmai/bdwgc "средства отладки"