У меня переполнение буфера, которое я абсолютно не вижу (в C). Прежде всего, это происходит только в 10% случаев или около того. Данные, которые он извлекает из БД каждый раз, кажется, не сильно отличаются между исполнениями ... по крайней мере, не настолько различны, чтобы я мог найти какой-либо различимый паттерн относительно того, когда это происходит. Точное сообщение от Visual Studio:
Произошло переполнение буфера в
hub.exe который повредил
внутреннее состояние программы. Нажмите
Перерыв для отладки программы или Продолжить
завершить программу.
Подробнее см. В разделе справки.
«Как отладить проблемы переполнения буфера».
Если я отлаживаю, я обнаруживаю, что он не работает в __report_gsfailure()
, что, я уверен, происходит из флага / GS на компиляторе, а также означает, что это переполнение стека, а не кучи. Я также могу видеть функцию, которую он бросил, когда уходил, но я не вижу там ничего, что могло бы вызвать такое поведение, функция также существует в течение длительного времени (более 10 лет, хотя и с некоторыми незначительными изменениями) и, насколько я знаю, этого никогда не было.
Я бы опубликовал код функции, но он довольно длинный и ссылается на множество проприетарных функций / переменных / и т. Д.
В основном я просто искал идею о том, что мне следует искать, которой у меня нет, или, возможно, некоторые инструменты, которые могут помочь. К сожалению, почти каждый инструмент, который я нашел, только помогает с отладкой переполнения в куче, и если я не ошибаюсь, это в стеке. Заранее спасибо.