Ошибка Ubuntu 18.04 при выходе из спящего режима: ошибка чтения на устройстве подкачки

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

Ошибка чтения на устройстве подкачки

Экран входа в систему занимает около 30 секунд, чтобы загрузить сообщение о случившемся. После входа в систему экран отключается один или два раза в секунду, и ни одна из моих программ больше не открыта. Я получаю приглашение "Обнаружена системная проблема". Когда я нажимаю "Отправить отчет", появляется другое уведомление:

Извините программа "Xorg" закрылась неожиданно. У вашего компьютера недостаточно свободной памяти для автоматического анализа проблемы и отправки отчета разработчикам.

Пока что я пробовал увеличить доступное пространство подкачки. Первоначально он составлял около 2 ГБ, и я создал еще один файл подкачки объемом 9 ГБ. Это не помогло. Занятое пространство подкачки (согласно команде swapon) после сбоя всегда составляет около 170 МБ.

DMESG, когда я возобновляю сеанс, до ошибки чтения на устройстве подкачки выглядит следующим образом:

    
[64046.474054] ACPI: Низкоуровневое возобновление завершено [64046.474162] ACPI: EC: EC запущен [64046.474162] PM: Восстановление памяти NVS платформы [64046.475139] Включение незагрузочных процессоров...
[64046.475196] x86: Загрузка конфигурации SMP: [64046.475196 ] smpboot: загрузочный узел 0 Кэш APIC процессора 1 0x2
[64046.475663]: родительский процессор не должен находиться в спящем режиме [64046.475859] CPU1 не работает [64046.475910] smpboot: загрузочный узел 0 кэша процессора 2 APIC 0x4
[64046.476330] кэш: родительский процессор не должен находиться в режиме ожидания [64046.476506] CPU2 работает [64046.476539] smpboot: загрузочный узел 0 Процессор 3 APIC 0x6
[64046.477071] кэш: родительский процессор не должен находиться в спящем режиме [64046.477255] CPU3 работает [64046.477274] smpboot: загрузочный узел 0777 640 APIC 0217 621 APO кэш: родительский процессор 4 не должен спать [64046.477922] CPU4 работает [64046.477947] smpboot: загрузочный узел 0 Процессор 5 APIC 0x3
[64046.478371] кэш: родительский процессор 5 не должен спать [64046.478571] CPU5 работает [64046.478591] smpboot 0 Процессор 6 APIC 0x5
[64046.479018] кеш: родительский процессор 6 не должен находиться в спящем режиме [64046.479229] CPU6 работает [64046.479247] smpboot: загрузочный узел 0 Процессор 7 APIC 0x7
[64046.479675] кэш: родительский процессор 7 не должен находиться в спящем режиме [64046.479899] CPU7 работает [64046.48]: Выход из режима ожидания системы S3 [64046.639206] ACPI: EC: событие разблокировано [64046.639711] sd 2: 0: 0: 0: [sda] Стартовый диск [64046.873289] usb 1-11: сброс полной скорости USB-устройства № 2 с помощью xhci_hcd
[64046.976869] ata4: канал SATA отключен (SStatus 4 SControl 300)
[64046.976892] ata2: канал SATA отключен (SStatus 4 SControl 300)
[64047.149289] usb 1-6: сброс высокоскоростного USB-устройства 40 с помощью xhci_hcd [640] [640] [640] psmouse serio1: синаптики: запрашиваемые максимальные координаты: x [..5660], y [..4570]
[64047.476302] psmouse serio1: синаптики: запрашиваемые минимальные координаты: x [1364..], y [1284..]
[64047.922603] OOM killer включен. [64047.922605] Перезапуск задач... выполнено.
[64047.928727] thermal thermal_zone1: не удалось прочитать тепловую зону (-61)
[64047.930036] Bluetooth: hci0: версия загрузчика 0.0 build 2 недели 52 2014 [64047.935036] Bluetooth: hci0: версия устройства 5 [64047.935037] Bluetooth: hci0: безопасный загрузка включена [64047.935038] Bluetooth: hci0: блокировка OTP включена [64047.935038] Bluetooth: hci0: блокировка API включена [64047.935039] Bluetooth: hci0: блокировка отладки отключена [64047.935040] Bluetooth: hci0: минимальная сборка прошивки 1 неделя 10 2014
[64047.935042] Bluetooth: hci0: микропрограмма найденного устройства: intel/ibt-11-5.sfi
[64047.944372] PM: приостановить выход [64048.050329] Ошибка чтения на своп-устройстве (8:0:1543400288)
[64048.460888] [drm] RC6 включен

Пожалуйста, дайте мне знать, если нужна какая-либо другая информация.

1 ответ

Решение

В используемом в настоящее время ядре Ubuntu 18.04 отсутствует довольно важное исправление ошибки.

Исправление для этого уже присутствует в вышестоящей версии ядра Linux 4.16.8. (Ошибка приостановки фактически начала появляться в версии ядра 4.15). Ubuntu нужно только выбрать этот маленький патч из апстрима. Эта ошибка часто приводит к сбою Xorg сразу после приостановки, т. Е. Происходит сбой всего графического сеанса входа в систему.

Обратите внимание, что эта ошибка часто происходит без отображения Read-error on swap device, Большую часть времени в журнале ядра не было ошибок. (Несколько раз это показывало EXT4-fs error а также Buffer I/O error вместо). Кроме того, эти сообщения об ошибках могут быть вызваны отказом оборудования. При диагностике этой проблемы, пожалуйста, сосредоточьтесь на других, более четких деталях.

Тестовое ядро ​​доступно в конце этой ошибки Ubuntu, то есть в этом комментарии: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887/comments/5

До сих пор никто не сообщил о своих результатах приостановки работы с тестовым ядром Ubuntu. Может случиться так, что если кто-то может сообщить об успехе, это побудит разработчика Ubuntu наконец-то включить исправление ошибки. Хотя я могу ошибаться, я не уверен на 100%, что сдерживает это.

Существует также известный обходной путь. Вы можете избежать сбоя, если сконфигурируете командную строку ядра для включения опции scsi_mod.scan=sync,

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887


Было подтверждено, что эта ошибка в исходной версии затрагивает пользователей Ubuntu [1]. В соответствии с фиксацией исправления (ниже), наиболее частым симптомом является сбой Xorg/Xwayland, то есть уничтожение всего графического интерфейса пользователя, когда ноутбук просыпается из спящего режима системы. Частота ошибок описывается один раз в несколько дней [2].

[1] Например, этот пользователь подтверждает ошибку и весьма специфический обходной путь: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1760450/comments/11

[2] Например, этот журнал аварий: https://bugzilla.redhat.com/show_bug.cgi?id=1553979

Это ошибка в blk-core.c. Это не характерно для какого-либо одного аппаратного драйвера. Технически ошибка приостановки вызывается ядром SCSI, которое используется всеми устройствами SATA.

В коммит также входит тест, который быстро и надежно подтверждает существование ужасающей ошибки.

Я думаю, вы можете избежать этой ошибки, только если у вас есть root на NVMe. Другой способ не попасть в аварию Xorg - это если вы не используете всю свою оперативную память, поэтому нет никакого давления, которое приводит к обмену холодных страниц Xorg. Кроме того, вы не будете воспроизводить сбой Xorg, если немедленно приостановите + возобновите. (Это расстроило мои тесты в один момент, оно сработало только после того, как система перестала работать после обеда:).

Исправлено: "блок: нигде не использовать прерывистое ожидание"

в ядре 4.17: https://github.com/torvalds/linux/commit/1dc3039bc87ae7d19a990c3ee71cfd8a9068f428

в ядре 4.16.8: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-4.16.y&id=7859056bc73dea2c3714b00c83b253d4c22bf7b6

отсутствие исправления в 4.15.0-24.26 (Ubuntu 18.04): https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic/tree/block/blk-core.c?id=Ubuntu-4.15.0-24.26#n856

То есть, эта ошибка все еще присутствует в пакете с исходным кодом Ubuntu linux-4.15.0-24.26 (и 4.15.0-23.25). Я прилагаю аппаратные детали (lspci-vnvn.log) системы, в которой, как известно, эта ошибка возникает.

С уважением, Алан

ВОЗМОЖНОЕ РЕШЕНИЕ: используйте параметр ядра: scsi_mod.scan=sync

Другие вопросы по тегам