Обработка исключений при завершении работы для Win32 / C ++

У меня есть процесс, который отлично обрабатывает исключения. Это вызывает:

_set_se_translator(exception_trans_func); 
SetUnhandledExceptionFilter(UnhandledExceptionFilterHandler);
_set_purecall_handler(purecallHandler);
set_terminate(terminateHandler);
set_unexpected(unexpectedHandler);
_set_invalid_parameter_handler(InvalidParameterHandler);
atexit(exitHandler); //ignored during an expected exit
_onexit(onexitHandler); //ignored during an expected exit

Каждый раз, когда происходит исключение, вызывается один из обработчиков, который создает для меня аварийный дамп. Жизнь хороша.

За исключением одного сайта клиента. Когда они закрывают процесс, возникает исключение, которое неПо какой-то причине через эти вызовы они перенаправлены, и они получают ошибку:

Инструкция на "0x101ba9df» ссылка на память на0x00000004", Память не могла бытьчитать", Нажмите OK, чтобы прекратить ....

Ссылка на память x000000004 выглядит так:Вероятно, нулевой указатель. И, глядя на этот адреспоявляется быть глобальным объектом STL »деструктор (вероятно, в CRT 's initterm вызов, где очищаются глобалы).

Прямо сейчас яЯ застрял, хотя, так как я могуполучить диагностический дамп и стек вызовов и посмотреть, что именно происходит. Так....

Почему нетt исключение маршрутизируется через вышеупомянутые обработчики, и вместо этого показывается пользователю?

Есть ли способ скрыть это диалоговое окно (поскольку в этот момент не причиняется вреда)?

И есть ли способ отследить корневую ошибку?

Спасибо за любые идеи.

Ответы на вопрос(3)

Ваш ответ на вопрос