Erreur Ubuntu 18.04 au réveil du sommeil: erreur de lecture sur le périphérique d'échange

11

Après que l'ordinateur portable ait été en mode veille pendant quelques heures, lorsque j'essaie de reprendre ma session, j'obtiens l'erreur suivante:

Erreur de lecture sur le périphérique d'échange

Il faut environ 30 secondes pour que l'écran de connexion se charge après cet événement. Une fois connecté, l'écran disparaît une ou deux fois pendant une seconde et aucun de mes programmes n'est ouvert. Je reçois une invite "Problème système détecté". Lorsque je clique sur "Envoyer le rapport", une autre notification apparaît:

Désolé, le programme "Xorg" s'est fermé de manière inattendue. Votre ordinateur n'a pas suffisamment de mémoire disponible pour analyser automatiquement le problème et envoyer un rapport aux développeurs.

Ce que j'ai essayé jusqu'à présent, c'est d'augmenter l'espace de swap disponible. Il faisait environ 2 Go au départ et j'ai créé un autre fichier d'échange de 9 Go. Cela n'a pas aidé. L'espace de swap occupé (conformément à la commande swapon) après le crash est toujours d'environ 170 Mo.

Le DMESG pour quand je reprends ma session, jusqu'à l'erreur de lecture sur le périphérique d'échange est le suivant:

    
[64046.474054] ACPI: reprise de bas niveau terminée
[64046.474162] ACPI: EC: EC démarré
[64046.474162] PM: Restauration de la mémoire NVS de la plate-forme
[64046.475139] Activation des CPU sans démarrage ...
[64046.475196] x86: démarrage de la configuration SMP:
[64046.475196] smpboot: démarrage du nœud 0 processeur 1 APIC 0x2
[64046.475663] cache: le parent cpu1 ne doit pas dormir
[64046.475859] CPU1 est en fonction
[64046.475910] smpboot: démarrage du nœud 0 processeur 2 APIC 0x4
[64046.476330] cache: le processeur parent ne doit pas être en veille
[64046.476506] CPU2 est en place
[64046.476539] smpboot: démarrage du nœud 0 processeur 3 APIC 0x6
[64046.477071] cache: le processeur parent ne doit pas être en veille
[64046.477255] CPU3 est en fonction
[64046.477274] smpboot: démarrage du processeur 0 du nœud 4 APIC 0x1
[64046.477721] cache: le processeur parent ne doit pas être en veille
[64046.477922] CPU4 est en place
[64046.477947] smpboot: Démarrage du processeur 0 du nœud 5 APIC 0x3
[64046.478371] cache: le parent cpu5 ne doit pas être en veille
[64046.478571] CPU5 est en place
[64046.478591] smpboot: démarrage du processeur 0 du nœud 6 APIC 0x5
[64046.479018] cache: le parent cpu6 ne doit pas être en veille
[64046.479229] CPU6 est en fonction
[64046.479247] smpboot: démarrage du processeur 0 du nœud 7 APIC 0x7
[64046.479675] cache: le parent cpu7 ne doit pas dormir
[64046.479899] CPU7 est en place
[64046.485913] ACPI: sortie de l'état de veille du système S3
[64046.639206] ACPI: EC: événement débloqué
[64046.639711] sd 2: 0: 0: 0: [sda] Disque de démarrage
[64046.873289] usb 1-11: réinitialiser le périphérique USB pleine vitesse numéro 2 à l'aide de xhci_hcd
[64046.976869] ata4: liaison SATA interrompue (SStatus 4 SControl 300)
[64046.976892] ata2: liaison SATA interrompue (SStatus 4 SControl 300)
[64047.149289] usb 1-6: réinitialisation du périphérique USB haute vitesse numéro 40 à l'aide de xhci_hcd
[64047.437370] psmouse serio1: synaptics: coordonnées maximales interrogées: x [..5660], y [..4570]
[64047.476302] psmouse serio1: synaptics: coordonnées min interrogées: x [1364 ..], y [1284 ..]
[64047.922603] OOM killer activé.
[64047.922605] Redémarrage des tâches ... terminé.
[64047.928727] thermal thermal_zone1: échec de lecture de la zone thermique (-61)
[64047.930036] Bluetooth: hci0: Bootloader révision 0.0 build 2 semaine 52 2014
[64047.935036] Bluetooth: hci0: la révision de l'appareil est 5
[64047.935037] Bluetooth: hci0: le démarrage sécurisé est activé
[64047.935038] Bluetooth: hci0: le verrouillage OTP est activé
[64047.935038] Bluetooth: hci0: le verrouillage de l'API est activé
[64047.935039] Bluetooth: hci0: le verrouillage du débogage est désactivé
[64047.935040] Bluetooth: hci0: version minimale du micrologiciel 1 semaine 10 2014
[64047.935042] Bluetooth: hci0: firmware du périphérique trouvé: intel / ibt-11-5.sfi
[64047.944372] PM: suspendre la sortie
[64048.050329] Erreur de lecture sur le périphérique d'échange (8: 0: 1543400288)
[64048.460888] [drm] RC6 activé

Veuillez me faire savoir si d'autres informations sont nécessaires.

Vedant
la source
J'ai un problème très similaire - après la mise à niveau vers 18.04, la fermeture du couvercle de l'ordinateur portable entraîne le même message d'erreur (erreur de lecture sur le périphérique d'échange) et un redémarrage. Si vous parvenez à trouver un correctif ailleurs, ce serait bien si vous pouviez le partager ici.
Adrian
1
Ayant exactement le même problème. J'ai fait quelques recherches et les utilisateurs d'Arch Linux avaient le même problème il y a quelques mois et j'ai conclu qu'il avait probablement quelque chose à voir avec le noyau 4.15
user8814

Réponses:

10

Le noyau Ubuntu 18.04 que vous utilisez actuellement manque un correctif de bogue assez important.

Le correctif est déjà présent dans la version 4.16.8 du noyau Linux en amont. (Le bug de suspension a effectivement commencé à se produire dans la version 4.15 du noyau). Ubuntu n'a besoin que de choisir ce petit correctif en amont. Le bogue provoque fréquemment des plantages de Xorg immédiatement après la suspension, c'est-à-dire qu'il plante toute la session de connexion graphique.

Notez que ce bogue se produit souvent sans s'afficher Read-error on swap device. La plupart du temps, il n'y avait aucune erreur dans le journal du noyau. (Quelques fois, ça s'est montré EXT4-fs erroret à la Buffer I/O errorplace). En outre, ces messages d'erreur pourraient être causés par une défaillance matérielle à la place. Lors du diagnostic de ce problème, veuillez vous concentrer sur d'autres détails plus distincts.

Un noyau de test est disponible à la fin de ce bug Ubuntu, c'est à dire dans ce commentaire: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887/comments/5

Jusqu'à présent, personne n'a signalé ses résultats de suspension avec le noyau de test Ubuntu. Il se peut que si quelqu'un peut signaler un succès, cela encouragera le développeur Ubuntu à enfin inclure le correctif de bogue. Je peux me tromper cependant, je ne suis pas sûr à 100% de ce qui retarde cela.

Il existe également une solution de contournement connue. Vous pouvez éviter le plantage si vous configurez la ligne de commande du noyau pour inclure l'option scsi_mod.scan=sync.

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


Il a été confirmé que ce bogue en amont affecte les utilisateurs d'Ubuntu [1]. Selon le commit correctif (ci-dessous), le symptôme le plus fréquent est un crash de Xorg / Xwayland, c'est-à-dire en tuant l'intégralité de l'interface graphique, lorsqu'un ordinateur portable est réveillé du sommeil du système. La fréquence du bogue est décrite comme une fois tous les quelques jours [2].

[1] Par exemple, cet utilisateur confirme le bug et une solution de contournement très spécifique: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1760450/comments/11

[2] Par exemple, ce journal des plantages: https://bugzilla.redhat.com/show_bug.cgi?id=1553979#c23

Il s'agit d'un bogue dans blk-core.c. Il n'est spécifique à aucun pilote matériel. Techniquement, le bug de suspension est déclenché par le noyau SCSI - qui est utilisé par tous les périphériques SATA .

Le commit inclut également un test qui prouve rapidement et de manière fiable l'existence d'un bug horrible.

Je suppose que vous pourriez éviter ce bug uniquement si vous avez root sur NVMe. L'autre façon de ne pas frapper le crash de Xorg est si vous n'utilisez pas toute votre RAM, donc il n'y a pas de pression qui mène à l'échange de pages froides de Xorg. De plus, vous ne reproduirez pas le crash de Xorg si vous suspendez + reprenez immédiatement. (Cela a frustré mes tests à un moment donné, cela ne s'est déclenché qu'après avoir laissé le système suspendu pendant le déjeuner :).

Correction: "bloc: n'utilisez pas d'attente interruptible n'importe où"

dans le noyau 4.17: https://github.com/torvalds/linux/commit/1dc3039bc87ae7d19a990c3ee71cfd8a9068f428

dans le noyau 4.16.8: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-4.16.y&id=7859056bc73dea2c3714b00c83b253d4c22bf7b6

manque de correctif dans 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

C'est-à-dire que ce bogue est toujours présent dans le paquet source Ubuntu linux-4.15.0-24.26 (et 4.15.0-23.25). J'attache les détails matériels (lspci-vnvn.log) d'un système où ce bug est connu pour se produire.

Cordialement Alan

SOLUTION: utilisez le paramètre du noyau: scsi_mod.scan = sync

sourcejedi
la source
Excellent travail! Confirmé sur Ubuntu 18.04 avec noyau 4.15.
ricosrealm
En fait, cela n'a pas fonctionné après un deuxième test.
ricosrealm
@ricosrealm le plus inattendu. Veuillez confirmer que votre problème se manifeste (parfois) comme SIGBUS (signal numéro 7) dans Xorg ou gnome-shell. C'est facile si vous avez systemd-coredumpinstallé et utilisé coredumpctl -r, mais je ne sais pas quoi faire quand vous avez installé proportion. (les paquets systemd-coredump et répartissent sont en conflit, veuillez faire preuve de jugement)
sourcejedi
@ricosrealm Mais au moins je peux vous demander de confirmer que 1) votre session graphique actuelle va, mais le système reste par ailleurs utilisable et vous pouvez vous reconnecter 2) dmesgne pas afficher un message « erreur de segmentation » pour Xorg / gnome-shell . (Et le plus souvent, je ne vois aucune erreur de noyau, mais vous pouvez parfois voir "Erreur de lecture sur le périphérique d'échange").
sourcejedi
@ricosrealm Btw, le patch semble avoir fait un peu plus de progrès depuis que j'ai posté la réponse. lists.ubuntu.com/archives/kernel-team/2018-June/093612.html
sourcejedi