Сбой приложения без объяснения причинC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сбой приложения без объяснения причин

Сообщение Anonymous »

Я хотел бы заранее извиниться, потому что это не очень хороший вопрос.

У меня есть серверное приложение, которое работает как служба на выделенном компьютере под управлением Windows. сервер. Это приложение выходит из строя совершенно случайным образом и не оставляет никаких намеков на причину сбоя.

При сбое в журналах событий появляется запись о том, что приложение не удалось, но выдается понятия не имею, почему. Он также дает некоторую информацию о неисправном модуле, но она не кажется очень достоверной, поскольку при каждом сбое неисправный модуль обычно меняется. Например, последний сказал, что это ntdll, предыдущий сказал, что это libmysql, предыдущий сказал, что это netsomething, и так далее.

Каждый поток в приложении обертывается в try/catch (...) (все, что выдается обработчиком исключений/не перехвачено специально), __try/__Exception (структурированные исключения) и try/catch (особые исключения C++). Приложение скомпилировано с использованием /EHa, поэтому функция catch all также будет перехватывать структурированные исключения.

Все эти обработчики исключений делают одно и то же. Сначала создается аварийный дамп. Во-вторых, запись записывается в новый файл на диске. В-третьих, в журналах приложений регистрируется запись. В случае этих сбоев ничего из этого не происходит. Самый нижний обработчик исключений (try/catch (...)) ничего не делает, он просто завершает поток. Основной поток приложения находится в режиме ожидания и не имеет возможности генерировать исключение.

Файлы журнала приложения просто перестают вести журнал. Вскоре после этого процесс, отслеживающий сервер, замечает, что он больше не отвечает, отправляет предупреждение и запускает его снова. Если монитор сервера замечает, что сервер все еще работает, но просто не отвечает, он делает дамп процесса и сообщает об этом, но этого не происходит.

Единственная другая причина такого поведения, которую я могу придумать, помимо неперехваченных исключений, — это вызов выхода или что-то подобное. Поиск по коду не вызывает вызовов каких-либо функций, которые могли бы завершить процесс. Я также убедился, что программа не завершается нормально (т. е. запрос на остановку от диспетчера служб).

Мы пробовали запустить ее с подключенным Windbg (нет шанс использовать Visual Studio, накладные расходы слишком высоки), но он ничего не сообщил, когда произошел сбой.

Что может привести к такому сбою приложения? У нас уже заканчиваются варианты, и мы полагаем, что это может быть аппаратный сбой, но мне это кажется маловероятным.

Подробнее здесь: https://stackoverflow.com/questions/522 ... xplanation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»