
Полтора месяца моя рабочая машина умирала. Не BSOD, не перезагрузка — именно умирала: экран чёрный, вентиляторы на видеокарте выходят на сто процентов и так и остаются. Никакой реакции ни на что. Только кнопка Reset.
Сначала раз в неделю. Потом два. К середине июля — три раза за сутки.
Но хуже самих зависаний было другое: после них не оставалось ничего. Ни дампа, ни минидампа, ни BSOD, ни единой записи WHEA. В журнале — Event 41, Kernel-Power, «система была перезагружена, завершив работу некорректно», BugcheckCode = 0. Windows даже не успевала понять, что умерла.
Отлаживать нечего. Есть только дорогущий трупик и никаких улик.
Забегая вперёд: виновата оказалась не память, не драйвер и не блок питания, хотя я последовательно подозревал всех трёх. Виноват был PCIe Gen5. Полтора месяца страданий лечится одним пунктом в BIOS.
Конфигурация, чтобы дальше было понятно, о чём речь: ASUS ProArt X870E-CREATOR WIFI, Ryzen 9 9950X3D, 64 ГБ DDR5, RTX 5080. Машина рабочая — сборка, расчёты, обработка данных, — и она же вечером игровая.
Труп без улик
Первое, что я сделал — полез в журналы событий. И нашёл ровно то, чего боялся: девять событий Event 41 за девяносто дней, и ни одного дампа. Ни MEMORY.DMP, ни минидампов, ни LiveKernelReports, ни WHEA-Logger, ни TDR.
Для тех, кто не сталкивался, поясню, почему это важно. BugcheckCode = 0 при Event 41 означает: машина не упала в синий экран. Она остановилась раньше, чем успел сработать обработчик исключений. BSOD с дампом — это, как ни странно, хорошая новость: значит, ядро было живо, поняло, что всё плохо, и успело записать состояние на диск. А тут процессор просто перестал выполнять инструкции. Записывать дамп было уже некому.
Отдельно раздражало, что зависания случались на простое. Не в игре, не под нагрузкой, не при рендере. Машина стояла, ничего не делала — и умирала. Пару раз я уходил на обед и возвращался к чёрному экрану.
Штатных источников информации, таким образом, не осталось. Журналы пусты, дампов нет, воспроизвести по команде нельзя — оно случается само, раз в несколько часов или раз в несколько дней, как повезёт.
Свидетеля пришлось сделать самому
Если система умирает, не оставляя записей, надо писать записи самому — снаружи, постоянно, и так, чтобы последняя строка гарантированно уцелела.
Получилось пятнадцать строк на PowerShell. Раз в двадцать секунд дёргаем nvidia-smi, забираем всё, что он отдаёт — температуру, потребление, частоты, загрузку, обороты вентилятора, pstate — и дописываем строку в CSV:
$q = 'timestamp,name,temperature.gpu,temperature.memory,power.draw,power.limit,' + 'utilization.gpu,utilization.memory,clocks.gr,clocks.mem,fan.speed,pstate' while ($true) { $now = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' $line = 'nvidia-smi-error,,,,,,,,,,' try { $out = & $smi --query-gpu=$q --format=csv,noheader,nounits 2>$null | Select-Object -First 1 if ($out) { $line = ($out -replace '^[^,]*,', '') } } catch { } Add-Content -Path $csv -Value ("{0},{1}" -f $now, $line) -Encoding utf8 Start-Sleep -Seconds 20 }
Ключевая деталь здесь — Add-Content на каждую итерацию, а не открытый на всё время работы StreamWriter. Буферизованная запись при жёстком зависании теряется целиком: данные лежат в памяти процесса и в кэше файловой системы, и на диск не попадают. Нужно, чтобы каждая строка уходила на диск сразу, иначе весь смысл теряется — а смысл именно в последней строке.
Дальше — задача в планировщике на вход в систему, и ждём. Что ж, ждать пришлось недолго.
Первая улика: видеокарта умерла, а компьютер — нет
6 июля, 14:11. Вот что оказалось в CSV:
2026-07-06 14:10:54, NVIDIA GeForce RTX 5080, 37, N/A, 36.68, 360.00, 0, 1, 262, 15001, 0, P0, 2026-07-06 14:11:14, NVIDIA GeForce RTX 5080, 38, N/A, 36.41, 360.00, 0, 1, 277, 15001, 0, P0, 2026-07-06 14:11:34,No devices were found, 2026-07-06 14:11:54,No devices were found, 2026-07-06 14:12:14,No devices were found,
Последний здоровый отсчёт: 38 °C, 36 ватт, ноль процентов загрузки, 277 МГц, вентилятор стоит. Абсолютно холодный простой. Через двадцать секунд карты в системе больше нет.
Это сразу вычеркнуло двух подозреваемых. Перегрев — мимо: 38 градусов. Просадка по питанию под нагрузкой — тоже мимо: 36 ватт из 360 доступных, карта не потребляла практически ничего.
Но самое интересное было не в этом. Логгер, обнаружив, что карты нет, не остановился. Он продолжил писать «No devices were found» каждые двадцать секунд — и писал их ещё двадцать один час, без единого пропуска, пока я утром не дотянулся до Reset.
То есть операционная система не умирала. Windows жила, планировщик работал, PowerShell исправно тикал, файловая система принимала записи. Умерла только видеокарта — отвалилась с шины PCIe и больше не отвечала. Машина всё это время работала вслепую, без вывода изображения.
А это значит, что моя исходная гипотеза — «процессор останавливается» — была неверной. По крайней мере в этом случае.
Вторая улика: 44 байта нулей
Следующее событие, на другой день, выглядело иначе. Логгер оборвался. Просто перестал писать.
Полез смотреть файл побайтово — и вот тут стало по-настоящему интересно:
02e4c4 20 31 35 30 30 31 2c 20 30 2c 20 50 30 2c 0d 0a 15001, 0, P0,.. 02e4d4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02e4e4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02e4f4 00 00 00 00 00 00 00 00 00 00 00 00 23 20 2d 2d ............# -- 02e504 2d 2d 20 77 61 74 63 68 64 6f 67 20 73 74 61 -- watchdog sta
Нормальная строка, CRLF — и 44 байта нулей. А сразу после них — метка перезапуска логгера, уже после загрузки.
Эти нули — не мусор и не повреждение диска. Это подпись жёсткого сброса посреди записи. NTFS успела расширить файл и разметить место под новую строку, а сами данные так и остались в кэше и на диск не попали: питание срезало раньше. При корректном завершении работы кэш сбрасывается; при выдёргивании питания — нет. Отсюда и дырка из нулей ровно на длину недописанной строки.
Здесь Event 41 в журнале был, и Event 6008 тоже. И карта опять была холодная: 34 °C, 35 ватт, простой.
Итого две разных картины отказа. В одной умирает только видеокарта, а система живёт. В другой мгновенно умирает вся машина. Я довольно долго считал это двумя независимыми болезнями — и это была моя вторая ошибка.
Полторы недели я подозревал память. Зря
Дальше пошла отработка версий, и версия про память выглядела железобетонной.
64 ГБ DDR5 двумя двухранковыми модулями, EXPO-профиль 6000 MT/s при базовых 4800. Для AM5 это классика жанра: контроллер памяти Ryzen на четырёх ранках и разогнанном профиле — и получаем зависания на простое без BSOD и без дампа. Ровно мой симптом. В любой ветке форума по AM5 вам первым делом скажут выключить EXPO, и скажут правильно.
Я выключил EXPO. Поставил JEDEC 4800. Прогнал несколько дней.
Зависло. Дважды.
Память оказалась ни при чём. Заодно к тому моменту отвалился и драйвер как подозреваемый: я обновился с январской версии на свежую, и машина продолжила падать как ни в чём не бывало.
Три версии, каждая по-своему убедительная, — и все три мимо. Что осталось? Осталась единственная вещь, общая для всех событий: карта отваливается от шины PCIe на холостом ходу.
Разгадка оказалась обидной
Если карта теряет линк на простое, а сама при этом холодная и почти ничего не потребляет — проблема не в карте и не в питании, а в самом линке.
Сначала я выключил управление питанием PCIe в Windows — ASPM, Link State Power Management, в powercfg на «Off» и от сети, и от батареи. Логика простая: если линк засыпает и не может проснуться, запретим ему засыпать. На следующее утро машина зависла снова. Не помогло.
Оставалось скорость. RTX 5080 в слоте X870E — это PCIe Gen5, 32 GT/s на линию. Я зашёл в BIOS и принудительно ограничил слот Gen4.
С тех пор — четырнадцать суток и ни одного Event 41. При том, что до этого было три события за сутки.
Заодно сложились и два разных симптома. Причина одна: карта теряет линк на простое. Если после этого процессор обращается к пропавшему устройству неотложенным чтением MMIO, он встаёт в это чтение навсегда — ответа не будет никогда, а откатить такую транзакцию нельзя. Ядро висит целиком, обработчик исключений не запускается, дамп писать некому. Отсюда и BugcheckCode = 0. Жёсткие зависания были не отдельной болезнью, а следствием первой: повезло — система осталась жить без видеокарты, не повезло — кто-то дёрнулся к мёртвому устройству, и всё встало.
Оговорюсь сразу, пока не набежали комментаторы. Я показал, что дело в Gen5: убрал Gen5 — отказы кончились. Почему именно этот линк не держал Gen5 — не знаю. Разводка платы, контакт в слоте, неудачный экземпляр карты, контроллер в процессоре — подходит любой вариант, я их не разделял.
И, если честно, не собираюсь. Чтобы проверить версию с контактом, надо вынуть и переставить карту — то есть полезть руками в единственную конфигурацию, которая за полтора месяца наконец перестала падать. Спасибо, не надо.
Что проверить, если у вас то же самое
Симптом, при котором это стоит подозревать: зависания или спонтанные ресеты на простое, Event 41 с BugcheckCode = 0, ни дампов, ни WHEA, — на свежей платформе с PCIe Gen5 (Ryzen 7000/9000 или Intel 12-14/Core Ultra, карта поколения RTX 40/50 или Radeon 7000).
Первым делом посмотрите, на чём вообще работает линк:
nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current --format=csv
Дальше по порядку, от бесплатного к трудоёмкому:
ASPM в Windows —
powercfg, PCI Express → Link State Power Management → Off. Мне не помогло, но проверяется за минуту.Принудительный Gen4 в BIOS. У ASUS это в разделе с настройками PCI Subsystem, называется в районе «PCIe Link Speed» или отдельным пунктом на слот; от платы к плате формулировка гуляет, ищите по слову Gen. Это и оказалось лечением.
Убедитесь, что настройка применилась.
pcie.link.gen.maxдолжен стать 4. Сброс CMOS вернёт Gen5 молча, и вы этого не заметите, пока не начнётся снова.Переустановка карты и кабеля питания — если предыдущее не помогло.
Скриншот: пункт BIOS с принудительным ограничением скорости слота до Gen4
И да, Gen4 против Gen5 на игровой карте стоит примерно нисколько: разница в играх в пределах пары процентов, поймать её без бенчмарка нельзя. Я потерял на этом настолько мало, что обратно на Gen5 не собираюсь.
Напоследок
Полторы недели я уверенно копал в сторону памяти. Версия была разумная: EXPO на AM5 действительно даёт ровно такие симптомы, и на моём месте почти любой начал бы с неё. Просто причина оказалась не та. Отбросить её удалось только контрольным опытом — выключить и дождаться, пока зависнет снова.
А логгер, кстати, тихо умер ещё три дня назад. Заметил я это только когда сел писать статью.
Комментарии (6)

Gsec
31.07.2026 06:41В своё время мучился почти весь 2020 год, ловя рандомные BSOD в обычных задачах, без нагрузки. Оказалось, что проц Ryzen 5 3600 из ранних партий, а в новых версиях AGESA с какого-то момента подкрутили профили питания. Для большинства процессоров это позволило снизить потребление и нагрев, но для каких-то напряжение временами снижалось ниже порога стабильности на отдельных ядрах, что и приводило к проблемам. Решил, просто выставив +0.05v для проца в BIOS.

swame
31.07.2026 06:41Просто разгонять комп, тем более рабочий это гнилая идея. После небольшого периода 90-x никогда так не делал.
Brazil
Аналогично, было.
Копьютер с таким же объемом памяти , карта GeForce 3070, только процессор I9
Точно также спонтанно выключался без логов и в простое.
Так ему любые шамантсва помогали. Вплоть до того что переносили в другое место и он месяц там мог работать нормально.
В BIOS-е чего только не меняли. Правда за Gen5 сказать не могу. Карту меняли на RTX2070 Стресс тесты давали и на карту и на процессор. Выдерживал без единого сбоя. Подключали через UPS.
Потом через некоторый период ремиссии снова начинает выключаться. Ну вот года 2 так и работает.
meljohin
Меняйте БП и лучше на новый, я мучался года 3. У меня зависал при выходе из спящего режима, когда по несколько раз в день, когда неделю или месяц держался. При работе зависал очень редко. Я пробовал менять БП в первые разы, но БП был тоже старый - это не позволяло убедиться, что это виновен БП. Электролит в кондерах высыхает и при пиковых потреблениях возникает проблема