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

182
06 декабря 2017, 21:51

Есть программа ("Электронной очереди") написанная на 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).

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

Answer 1

Исключение SYSTEM_SERVICE_EXCEPTION означает проблему при переходе из кода уровня пользователя в код уровня ядра. Она может возникать например, из-за того, что данные, переданные модулю ядра, были каким-то образом повреждены и не было предусмотрено проверки их корректности. Parameter 1 у BSOD - код исключения, 0xC0000005 соответствует STATUS_ACCESS_VIOLATION, т.е. произошла попытка обратиться к защищенной области памяти.

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

Для диагностики проблемы можно попробовать следующее:

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

  2. Обновить драйвера до последних версий.

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

  4. Заменять компоненты железа на заведомо исправные, и смотреть, на каком исчезнет ошибка.

READ ALSO
Как задать значение ComboBox SelectedValue

Как задать значение ComboBox SelectedValue

Здравствуйте! Помогите пожалуйстаУ меня есть ComboBox в форме

265
Invalid argument. Culture is not supported.

Invalid argument. Culture is not supported.

Проект работал нормально, запушил его на Гит, пересобрал все refferences, перебилдилИ вот такая ошибка вылезла:

211
Перестают писаться логи. Log4Net

Перестают писаться логи. Log4Net

Аппендер настроен, логи пишутся нормально до неизвестного момента времени, после которого логи перестают писаться вообще, хотя приложение...

223
ComboBox из картинок Winforms

ComboBox из картинок Winforms

У контрола на форме необходимо менять статусКонтрол может иметь один из 3 статусов - 3 картинки в виде телефонной трубки с разным цветом фона

261