Это ошибка, вызванная неправильным поведением неуправляемого кода C / C ++. Неуправляемый CRT проверяет, что код не выходит за пределы конца массива, расположенного в стеке, сохраняя cookie в кадре стека. Когда функция возвращается, она проверяет, есть ли там cookie. Если это не так, предполагается, что какой-то вредоносный код или ошибка в коде C / C ++ разрушили фрейм стека. Справедливо предположить, именно так большинство вирусных инфекций работали в конце девяностых.
Вероятность того, что это ошибка в коде C / C ++, составляет около 99,999%, 0,001% - что компьютер подвергся атаке. Вам нужно найти этот код C / C ++ и взять программиста, который написал его, чтобы исправить ошибку. Если вы не знаете, где искать, начните с подозрений на какой-либо элемент управления ActiveX или COM-сервер. И присоедините отладчик в неуправляемом режиме к работающей версии вашей программы, чтобы увидеть, какие DLL она загрузила. Используйте Debug + Windows + Modules и убедитесь, что вы можете учесть все DLL.
О, и подробности сбоя будут полезны для локализации источника.