Après que l'ordinateur portable soit en mode veille pendant quelques heures, lorsque j'essaie de reprendre ma session, j'obtiens le message d'erreur suivant:
Erreur de lecture sur le périphérique d'échange
Il faut environ 30 secondes à l’écran de connexion pour charger la publication de ce qui se passe. Une fois connecté, l’écran s’efface une ou deux fois par seconde et aucun de mes programmes n’est ouvert. Je reçois un message "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 assez 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. C'était initialement environ 2 Go et j'ai créé un autre fichier d'échange de 9 Go. Cela n'a pas aidé. L'espace d'échange occupé (selon 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 la suivante:
[64046.474054] ACPI: CV de niveau inférieur complet [64046.474162] ACPI: EC: EC démarré [64046.474162]: Restauration de la mémoire NVS de la plate-forme [64046.475139. ] Activation des processeurs autres que de démarrage ... [64046.475196] x86: Configuration SMP de démarrage: [64046.475196] smpboot: Amorçage Node 0 Processeur 1 APIC 0x2 [64046.475663] cache: cpu1 parent ne devrait pas être en veille [64046.475859] CPU1 est en hausse [64046.475910] smpboot: Démarrage Node 0 Processeur 2 APIC 0x4 [64046.476330] cache: la CPU parent ne devrait pas être en veille [64046.476506] La CPU2 est en hausse [64046.476539] smpboot: Amorçage Node 0 Processeur 3 APIC 0x6 [64046.477071] cache: cpu3 parent ne devrait pas être en veille [64046.477255] CPU3 est en hausse [64046.477274] smpboot: Amorçage Node 0 Processeur 4 APIC 0x1 [64046.477721] cache: cpu4 parent ne devrait pas être en veille [64046.477922] CPU4 est en hausse [64046.477947] smpboot: Amorçage Node 0 Processus ou 5 APIC 0x3 [64046.478371] cache: parent cpu5 ne doit pas être en veille [64046.478571] CPU5 est en hausse [64046.478591] smpboot: Démarrage Node 0 APIC 0x5 [64046.479018] du processeur 6 cache: la CPU parent ne doit pas être en veille [64046.479229] La CPU 6 est en hausse [64046.479247] smpboot: Démarrage Node 0 APIC 0x7 du processeur 7 [64046.479675] cache: la CPU parent7 ne devrait pas être en veille [64046.479899] La CPU7 est active [64046.485913] ACPI: sortie de l'état de veille du système S3 [64046.639206] ACPI: EC: événement non bloqué [64046.639711] sd 2: 0: 0: 0: [sda] Disque de démarrage [64046.873289] usb 1-11: réinitialisation complète - USB numéro 2 avec xhci_hcd [64046.976869] ata4: liaison SATA désactivée (SStatus 4 SControl 300) [64046.976892] ata2: liaison SATA désactivée (SStatus 4 SControl 300) [64046.976892] ata2: liaison SATA désactivée (SStatus 4 SControl 300) [64047.149289] usb 1-6: réinitialisez le périphérique USB haute vitesse numéro 40 à l'aide de xhci_hcd [64047.437370] psmouse serio1: synaptics: interrogation du nombre maximal de coordonnées: x [..5660], y [..4570] [64047.476302] psmouse serio1: synaptics: interrogées coordonnées min: x [1364 ..], y [1284 ..] [64047.922603] Le tueur OOM est activé. [64047.922605] Redémarrage des tâches ... terminé. [64047.928727] thermal thermal_zone: échec de lecture de la zone thermique (-61) [64047.930036] Bluetooth: hci0: révision du chargeur de démarrage 0.0 build 2 semaine 52 2014 [64047.935036] Bluetooth: hci0: révision du périphérique est de 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 firmware 1 semaine 10 2014 [64047.935042] Bluetooth: hci0: Micrologiciel de 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 sur
S'il vous plaît laissez-moi savoir si d'autres informations sont nécessaires.
Le noyau Ubuntu 18.04 que vous utilisez actuellement manque un correctif de bogue assez important.
Le correctif pour cela est déjà présent dans la version 4.16.8 du noyau Linux en amont. (Le bogue de suspension a effectivement commencé à se produire dans la version 4.15 du noyau). Ubuntu n'a besoin que de sélectionner ce petit patch en amont. Le bogue provoque souvent le blocage de Xorg immédiatement après la suspension, c’est-à-dire qu’il bloque toute la session de connexion graphique.
Notez que ce bogue arrive souvent sans afficher Read-error on swap device
. La plupart du temps, il n'y avait pas d'erreur dans le journal du noyau. (Quelques fois, il a plutôt affiché EXT4-fs error
et Buffer I/O error
). En outre, ces messages d'erreur pourraient être causés par une défaillance matérielle. 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 bogue Ubuntu, c'est-à-dire dans ce commentaire: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776887/comments/5
Jusqu'à présent, personne n'a rapporté les résultats de sa suspension avec le noyau de test Ubuntu. Il se peut que si quelqu'un peut signaler le succès, cela encouragera le développeur Ubuntu à inclure enfin le correctif. Je peux me tromper cependant, je ne suis pas sûr à 100% de ce qui la retient.
Il existe également une solution de contournement connue. Vous pouvez éviter le blocage 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 affectait les utilisateurs d’Ubuntu [1]. Selon le correctif de correctif (ci-dessous), le symptôme le plus fréquent est un crash de Xorg/Xwayland, c’est-à-dire la suppression de l’interface graphique en entier, lorsqu’un ordinateur portable est sorti du système. La fréquence du bogue est décrite comme une fois tous les quelques jours [2].
[1] E.g. cet utilisateur confirme la solution de contournement très spécifique au bogue: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1760450/comments/11
[2] E.g. ce journal des accidents: https://bugzilla.redhat.com/show_bug.cgi?id=1553979#c2
C'est un bug dans blk-core.c. Ce n'est pas spécifique à un pilote de matériel. Techniquement, le bogue de suspension est déclenché par le noyau SCSI - qui est utilisé par par tous les périphériques SATA .
Le commit comprend également un test qui prouve de manière rapide et fiable l’existence d’un bogue effroyable.
Je suppose que vous pourriez éviter ce bogue uniquement si vous avez la racine sur NVMe. L’autre moyen de ne pas frapper le crash de Xorg est de ne pas utiliser toute votre mémoire vive. Il n’ya donc pas de pression qui pourrait faire basculer les pages froides de Xorg. En outre, 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 quitté le système suspendu pendant le repas :).
Correction: "bloquer: ne pas utiliser l'attente interruptible n'importe où"
dans le noyau 4.17: https://github.com/torvalds/linux/commit/1dc3039bc87ae7d19a990c3ee7cfd8a9068f428
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=7859056bc73dea2c3714b00c83b25b25b22bf7b6
absence de solution 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 bogue est connu pour se produire.
Cordialement Alan
Contournement: utilisez le paramètre du noyau: scsi_mod.scan = sync