Я пишу небольшую утилиту (VC 2010, без clr), которая выполняет одну простую задачу (растеризацию) с использованием сторонней библиотеки.Позже утилита будет использоваться большим приложением.Иногда утилита аварийно завершает работу из-за некоторого повреждения кучи в сторонней библиотеке.Это нормально, но Windows (Vista / 2008) показывает хорошо известный диалог «Программа перестала работать ... Закрыть / Отладить программу».что не подходит в моем случае (на стороне сервера).Утилита должна аварийно завершить работу / прекратить работу без видимых эффектов.
Для этого я установил SEH для необработанного исключения (SetUnhandledExceptionFilter).Обработчик отлично вызывается для исключений, таких как AV (* (PDWORD) 0 = 0), но по какой-то причине он не вызывается в случае повреждения кучи.Повреждение происходит в dllmain одного из библиотек dll сторонних разработчиков во время его выгрузки.
Пара вопросов.Кто-нибудь может объяснить, почему обработчик не вызывается?Есть ли другой способ предотвратить этот диалог?