APPCRASH после ок. 40 сек

У меня есть многопоточное серверное приложение, которое отлично работает в течение первого цикла. 40 секунд (в это время приложение в основном ожидает только входящие пакеты). После этих 40 секунд он внезапно падает, хотя ничего не изменилось, клиенты не подключены, данные не отправлены и т. Д.

Отчет о сбое, который я получаю от Windows, выглядит так:

Problem signature:
Problem Event Name:   APPCRASH
Application Name: myapplicationname.exe
Application Version:  0.0.0.0
Application Timestamp:    508d2a0b
Fault Module Name:    StackHash_58df
Fault Module Version: 6.1.7600.16385
Fault Module Timestamp:   4a5bdb3b
Exception Code:   c0000374
Exception Offset: 000cdcbb
OS Version:   6.1.7600.2.0.0.256.48
Locale ID:    1031
Additional Information 1: 58df
Additional Information 2: 58df710f17985997dec7b600103e4fd6
Additional Information 3: bc2b
Additional Information 4: bc2b581ed6e84cb4442c19134e8081d3

Я проверил возможные переполнения буфера, утечки памяти, но это не так (по крайней мере, я этого не заметил).

Кроме того, меня еще больше смутило то, что, если я скомпилирую его и запущу в Visual Studio (локальный отладчик Windows), эта ошибка не произойдет, никакого сбоя, все работает так, как должно. Я не знаю, с чего начать, чтобы это исправить, поскольку у меня никогда не было такой проблемы.

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

Грубое предположение:
У меня есть цикл опроса, который сильно напрягает один из моих потоков, так как я не дошел до того, чтобы реализовать весь код. Возможно ли, что DEP вызывается и останавливает мое приложение, чтобы защитить один из моих процессоров? -Добавил сон, но ничего не изменилось.

0

Решение

Код исключения: c0000374

Вы найдете эти коды исключений, документированные в заголовочном файле SDK ntstatus.h:

//
// MessageId: STATUS_HEAP_CORRUPTION
//
// MessageText:
//
// A heap has been corrupted.
//
#define STATUS_HEAP_CORRUPTION           ((NTSTATUS)0xC0000374L)

Разрушение кучи, конечно, очень распространенная опасность программирования на C ++. Используйте распределитель отладки, доступный в crtdbg.h, если вы не можете найти ошибку.

1

Другие решения

Других решений пока нет …