Windows 11 сохраняет дамп при удержании кнопки питания
Windows 11 при принудительном выключении удержанием кнопки питания успевает сохранить снимок состояния системы. Об этом рассказал ветеран Microsoft Рэймонд Чен: примерно за четыре секунды до аппаратного отключения ядро понимает, что пользователь завершает работу принудительно, и создаёт дамп памяти ядра.
Аппаратно питание обычно отключается через 12 секунд удержания, а в документации Microsoft к отладчику указано около 10 секунд; на некоторых ноутбуках с процессорами ARM64 это происходит ещё быстрее. Иногда четырёх секунд не хватает, и дамп оказывается неполным, а если ноутбук отключается уже через пять секунд, создать его не получится вовсе.
Внутри Microsoft такие сбои называют long power button hold (LPBH). Если они происходят на фоне полностью чёрного экрана, дампы анализирует отдельная рабочая группа, в которую входит Чен. Причинами могут быть неисправный видеодрайвер, ошибка графического композитора или зависание процесса, отвечающего за вывод изображения.
По документации Microsoft о конфиденциальности обязательные диагностические данные лишь уведомляют компанию о создании файла, но сами дампы не собираются без дополнительных разрешений — например, согласия на отправку необязательных данных. При этом факт длительного нажатия кнопки питания фиксируется в обязательном событии LongPowerButtonPressDetected.
Microsoft признаёт, что в дамп памяти при сбое могут непреднамеренно попасть фрагменты файлов, с которыми пользователь работал в момент проблемы. Что именно содержится в LPBH-дампах, в компании не уточняют.
Проверить настройки можно в разделе «Параметры» > «Конфиденциальность и защита» > «Диагностика и отзывы». Отключение отправки необязательных диагностических данных отменяет основное разрешение на сбор дампов, хотя отдельного переключателя для дампов кнопки питания нет; кнопка удаления диагностических данных отправку не останавливает и не очищает сведения в учётной записи Microsoft.
Чен предполагает, что в тестовых сборках Windows Insider система может просить отпустить кнопку питания, чтобы ядро успело завершить создание дампа. Подобный экран документирован давно: при параметре реестра PowerButtonBugcheck удержание кнопки 7 секунд с последующим отпусканием до истечения 10 секунд вызывает ошибку системы с кодом 0x1C8. Функция появилась в Windows 10 версии 1809 и требует кнопки питания через интерфейс GPIO.