Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

BSOD при работе программы под .NET 4.6.2

#c_sharp #net #windows #bsod


Есть программа ("Электронной очереди") написанная на C# под фреймворк .NET 4.6.2
Программа должна постоянно крутится на сервере, но стали поступать жалобы, что компьютер
перезагружается несколько раз в день, снял дамп, там присутствует постоянно 1 ошибка
SYSTEM_SERVICE_EXCEPTION 0x0000003b. driver ntoskrnl.exe



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

1.
Программа использует сетевую карту. 
4 терминала по выдаче билетов, подключены по TCP/IP

2.
Программа использует 2 USB порта:
Конверторы RS-485 в USB, к ним подключены кассовые планшеты

3.
Карта передающая видеобуфер. 
Через эту карту подключены табло, через спец программу (Mars)
происходит захват видео буффера с областей экрана, эти области и идут на табло.
Карта вставлена в PCI слот и подключается как монитор по DVI.

4.
Вывод звука через встроенную звуковую карту.
Из низкоуровневых библиотек я использую Naudio.dll (Подтягивал через Nuget).

Объект важный, хотелось бы услышать ваши мнения.
    


Ответы

Ответ 1



Исключение SYSTEM_SERVICE_EXCEPTION означает проблему при переходе из кода уровня пользователя в код уровня ядра. Она может возникать например, из-за того, что данные, переданные модулю ядра, были каким-то образом повреждены и не было предусмотрено проверки их корректности. Parameter 1 у BSOD - код исключения, 0xC0000005 соответствует STATUS_ACCESS_VIOLATION, т.е. произошла попытка обратиться к защищенной области памяти. Причиной может быть как дефект железа, так и ошибка в коде драйвера (ошибка в коде .Net приложений напрямую обычно не вызывает такое исключение). Поскольку драйвера видеоадаптеров в Windows разделены на модули уровня ядра и уровня пользователя, наибольшее подозрение падает именно на них. Для диагностики проблемы можно попробовать следующее: Настроить windbg на правильные символы и попытаться получить стек вызовов и список загруженных модулей. Это поможет выявить, какие именно драйвера вызывают проблему. Обновить драйвера до последних версий. Те драйвера, которые уже были недавно обновлены, наоборот попробовать откатить на предыдущую версию (т.к. в новой версии могла появится ошибка). Если проблема не исчезнет, вернуть новую версию. Заменять компоненты железа на заведомо исправные, и смотреть, на каком исчезнет ошибка.

Комментариев нет:

Отправить комментарий