Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WaitForSingleObject, И критическая ошибка ожидаемой программы 
:(
    Опции темы
youngprankster
Дата 24.6.2010, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



Необходимо запускать из программы сторонний экзешник (консолька) - он проделывает ряд действий с данными, лежащими по определенным путям и завершается. Создание и ожидание этого процесса - функциями CreateProcess и WaitForSingleObject с интервалом ожидания соответственно. Этот набор действий производится в бесконечном (ну, до остановки рабочего потока) цикле.  smile 
Но иногда в процессе работы ожидаемое приложение может вызвать критическую ошибку - соответственно, его процесс "подвисает", выдается системное сообщение об ошибке, после закрытия которого может вызваться диалог с предложением дебага. WaitForSingleObject по таймауту эту ситуацию проходит, анализируя его результат, я могу завершить соответствующий подвисший процесс по TerminateProcess - но на экране остаются висеть окна этих сообщений об ошибках. Принадлежат они системному процессу csrss.exe (дебаговые у меня - vsjitdebugger.exe от Visual Studio, как будет у пользователя - не знаю).  smile 
Исходников запускаемой консоли пока нет, так что решать проблему надо в вызывающей программе. Та безнадзорно крутится на сервере, и последствия роста таких ошибок на экране меня не сильно вдохновляют.  smile 
Отсюда вопрос. Может кто-нибудь посоветовать, как решить проблему таких окон? Находить окна, принадлежащие csrss.exe и делать им DestroyWindow? Или как-то можно узнать список окон с сообщениями об ошибках для данного процесса? Или какие-то параметры CreateProcess могут упростить вылавливание таких ошибок?

Ошибки такого рода:
"Исключение неизвестное программное исключение (0x0eedfade) в приложении по адресу 0x7c812afb"

Упрощенный код:
Код

    while (!Terminated)
    {
        ...
        if (CreateProcess(0, sPathToApp, 0, 0, true, DETACHED_PROCESS, 0, 0, &xSInfo, &xPInfo))
        {
            DWORD ulWait = WaitForSingleObject(xPInfo.hProcess, 5000);
            switch (ulWait)
            {
                //  процесс завершен успешно
                case WAIT_OBJECT_0:
                    ProcessResults();
                break;
                //  облом
                default:
                    HANDLE hProc = OpenProcess(PROCESS_TERMINATE, true, xPInfo.dwProcessId);
                    TerminateProcess(hProc, 0);
                    sErrorMessage = "Ошибка выполнения процесса";
            }
            CloseHandle(xPInfo.hThread);
            CloseHandle(xPInfo.hProcess);
        }
    }


Это сообщение отредактировал(а) youngprankster - 24.6.2010, 16:56
PM MAIL   Вверх
borisbn
Дата 24.6.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



где-то в и-нете наталкивался на то, что можно в реестре ( кажется в названии пути есть PCHealth ) отключить вывод всех окон с сообщениями об ошибке. погугли PCHealth


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
youngprankster
Дата 24.6.2010, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



Выход, конечно, не из элегантных smile 
Но в силу срочности попробую хотя бы в этом направлении посмотреть, спасибо!
PM MAIL   Вверх
xvr
Дата 25.6.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Нужно отключить JIT Debugger

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.