Я сейчас пытаюсь отладить мой Crash-Handler, это внешний исполняемый файл, который вызывается, когда моя программа находит необработанное структурированное исключение. Я перекомпилировал исполняемый файл обработчика сбоев, и при тестировании я получил сообщение: «Программа слишком велика, чтобы уместиться в памяти».
Немного покопавшись, я обнаружил, что это было вызвано вызовом CreateProcess внутри моего фильтра необработанных исключений. Я нашел это сообщение , в котором говорится, что это сообщение об ошибке указывает на то, что исполняемый файл поврежден, однако, если я вызываю CrashHandler.exe из командной строки, я не получаю такой ошибки.
Другая информация:
- Я пытался восстановить свой
приложение и обработчик сбоев
несколько раз в отладке и
режим разблокировки.
- Я попытался дать работающему потоку на 2 порядка больше стекового пространства.
- Я тестировал тот же CrashHandler.exe в другом приложении, которое уже им пользовалось, и проблем не было.
- Я пытался использовать предыдущую версию exe, которая работала раньше, но с тем же результатом.
- Перезапуск системы.
Мой звонок в CreateProcess:
//Fire off the Handler
//HandlerArgs = "CrashHandler.exe arg1 arg2 arg3 etc..."
if(CreateProcess(NULL, HandlerArgs, NULL, NULL, TRUE, CREATE_PRESERVE_CODE_AUTHZ_LEVEL | CREATE_SUSPENDED,
NULL, NULL, &StartupInfo, &NewProcessHandle))