Forum Linux.noyau Comment connaître l'origine d'un Kernel Panic depuis le mode graphique ?

Posté par  .
Étiquettes :
3
15
nov.
2012

Bonsoir à tous,

J'utilise depuis 2008 un PC composé et assemblé par mes soins, équipé entre autres d'un Core 2 Quad Q9550 et d'une carte graphique ASUS EN9800GT que je fais fonctionner avec les pilotes nVidia propriétaires. Malheureusement, si dans l'ensemble la configuration marche plutôt bien, ma machine est victime depuis le début de fréquents plantages.

Après avoir longtemps essayé d'en isoler la cause, j'ai fini par être presque convaincu que cela provient du système vidéo car ma machine plante :
— Si je la laisse très longtemps sans activité ;
— Si je fais fonctionner une application 3D trop gourmande.

En revanche, je peux par exemple naviguer sur le web pendant des heures sans avoir de problème. Les plantages se produisent quand même parfois dans ces conditions, mais c'est très rare.

Sans être un expert de la chose, j'ai soupçonné un problème thermique, mais il me semble que la fréquence des plantages reste relativement stable avec un même pilote, mais change lorsque je le mets à jour. C'est bien sûr très subjectif, surtout depuis que je suis passé à Gnome 3 avec Fedora 17. Ce qui est intéressant, c'est que lorsque cela se produit, soit ma machine est complètement plantée (un sample audio en train de jouer tourne en boucle, et tout est complètement figé), soit je me retrouve dans les mêmes conditions mais avec les trois LED du clavier qui se mettent à clignoter, typiques d'un kernel panic.

Quelqu'un a-t-il déjà rencontré les mêmes problèmes avec ce matériel et, du coup, y aurait-il moyen de demander au kernel soit de repasser de X.org à une console texte avant d'envoyer son message, soit de les enregistrer quelque part tant qu'il lui reste un lueur de conscience ? Je sais qu'il existe kdump et kexec mais je n'ai encore jamais mis en œuvre ces mécanismes.

Merci à tous.

  • # vmcore or it didn't happen

    Posté par  (site web personnel) . Évalué à 4.

    Je sais qu'il existe kdump et kexec mais je n'ai encore jamais mis en œuvre ces mécanismes.

    Bah il serait temps. Il est aussi possible que tu trouves des indices dans les logs kernels s'ils ont eu le temps d'être écrit sur le disque.

    D'un autre côté, s'il s'agit effectivement de bugs du driver nvidia, même si tu diagnostiques exactement le problème, ça risque de ne pas t'avancer à grand chose.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: vmcore or it didn't happen

      Posté par  (site web personnel) . Évalué à 3.

      tu peux aussi essayer d'utiliser le driver libre nouveau quelques temps, si tu n'as plus de plantages c'est que tu as bien identifié le problème.

      • [^] # Re: vmcore or it didn't happen

        Posté par  . Évalué à 2.

        J'y ai pensé mais, malheureusement, les plantages se produisent majoritairement quand j'utilise la 3D, et spécialement sous X-Plane-9. À dire vrai, je l'utilise énormément, et j'utilise peu la 3D à côté, sauf quand je joue à Portal 2 via PlayOnLinux et Wine.

        Ça ne plante pratiquement jamais avec Portal (mais c'est dur de faire des statistiques fiables). Sous X-Plane, c'est assez curieux : que ma machine soit chaude ou froide, le simulateur va déclencher un Kernel Panic neuf fois sur dix dans un laps de temps compris entre 5 et 30 minutes après le lancement. Puis, si je relance ma machine à ce moment et que je redémarre le simulateur, je peux piloter pendant des heures sans le moindre plantage (j'aurais même pu dire crash, c'eût été le cas de le dire).

        Donc, j'ai peur que Nouveau ne m'aide pas beaucoup sur ce point.

  • # RAM

    Posté par  . Évalué à 3. Dernière modification le 16 novembre 2012 à 10:07.

    En revanche, je peux par exemple naviguer sur le web pendant des heures sans avoir de problème. Les plantages se produisent quand même parfois dans ces conditions, mais c'est très rare.

    Je testerais aussi la RAM on sait jamais.

    Pour la température de la CG elle est indiquée dans l'interface de configuration Nvidia (nvidia-settings), mais normalement s'il y a sur-chauffe la carte diminue sa fréquence et ça devrait pas planter toute la machine.

    Condensateurs gonflés sur la carte-mère ? Sur la CG ?

    Ah pardon :/

    ma machine est victime depuis le début de fréquents plantages.

  • # Deuxième PC?

    Posté par  . Évalué à 1.

    Tu ne peux pas envoyer le log sur un autre ordinateur via le port série ? N'importe quel appareil avec un port USB host peut faire l'affaire grâce à un adaptateur série/USB.

    Mes deux Linux plantent très régulièrement et mon Windows au milieu récupère le tout sans problème.

    • [^] # Re: Deuxième PC?

      Posté par  . Évalué à 6.

      Mes deux Linux plantent très régulièrement et mon Windows au milieu récupère le tout sans problème.

      j'adore celle là, ca pourrait etre le sujet d'un troll "comment je sauve mes Linux en utilisant un PC sous Windows ?" ;)

      excellente, en plus un vendredi :p

      • [^] # Re: Deuxième PC?

        Posté par  . Évalué à 4.

        Oulala, je relis mon message et il y a comme une affreuse méprise. Le windows du milieu, c'est pour faire tourner Outlook, Office et compagnie, c'est comme ça, c'est pas moi qui choisit ce genre de truc dans ma boîte, et de toute façon, n'importe quelle machine capable de lire et d'afficher les données de deux ports série ferait l'affaire. Les PC sous Linux c'est pour développer et maintenir des pilotes. Et comme je suis un peu con et que je ne réussi pas à taper 500 lignes de code sans faire de bug, ben quand je teste, ça plante le kernel. Voilà. Désolé de te décevoir, je ne suis pas un chinois du FBI payé par MS sur un compte offshore aux îles Caïman pour discréditer Linux.

    • [^] # Re: Deuxième PC?

      Posté par  . Évalué à 2.

      Malheureusement non. C'est bien un Kernel Panic et tout est freezé à partir de ce moment là. Même les logs n'ont pas le temps d'être écrits sur le disque.

      • [^] # Re: Deuxième PC?

        Posté par  (site web personnel) . Évalué à 2.

        Même les logs n'ont pas le temps d'être écrits sur le disque.

        C'est bien pour ça qu'il suggère de les écrire sur le port série (qui a de grandes chances d'être opérationel au moment du panic).

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: Deuxième PC?

          Posté par  . Évalué à 2.

          Au temps pour moi, j'ai lu trop vite.

          J'y avais effectivement pensé au départ mais, malheureusement, ma carte-mère (une ASUS P5E3) ne dispose ni de ports série, ni d'un port parallèle. Je devrais effectivement investir aujourd'hui dans une paire d'adaptateurs USB-Série mais le fait est que je n'en avait jamais eu l'utilité jusque là. J'ai lu serial-console.txt mais, à part cela, je suppose qu'il n'y a pas moyen d'envoyer cela par le réseau (quitte à utiliser le port Ethernet en point-à-point comme un vulgaire port série) ?

          J'ai également commencé à mettre mes doigts dans kexec mais je n'arrive pas à grand chose.
          J'utilise un kernel 3.6.7 en 64 bits compilé par mes soins avec les options idoines. J'essaie d'utiliser le même noyau avec le même ramdisk pour

          Après avoir essayé plusieurs combinaisons pour l'option "crashkernel=" au démarrage, j'ai fini par trouver une combinaison valable qui me permette de charge mon noyau avec kexec -p /usr/src/linux-3.6.7/arch/x86/boot/bzImage --initrd=/boot/initramfs-3.6.7.img --append="1 root=/dev/sda2 irqpoll maxcpus=1 reset_devices selinux=0". Ça fonctionne, mais lorsque que je provoque artificiellement un crash avec SysRq+C, le nouveau noyau démarre mais reste coincé sur Unpacking initramfs.

          Ma distrib' est une Fedora 17 mais après quelques recherches, je suis tombé sur ce fil dans un forum Archlinux : https://bbs.archlinux.org/viewtopic.php?id=148264 . On y lit qu'il faut réserver au moins 756 Mo pour les fichiers du ramdisk. Je ne sais pas si c'est vrai ou pas mais, quoi qu'il en soit, disposant moi-même de 4 Gio de RAM et après examen de /proc/iomem, je lis entre autres :

          2:00010000-0009f7ff : System RAM
          …
          10:00100000-cff7ffff : System RAM
          …
          66:100000000-12fffffff : System RAM
          
          

          J'ai donc essayé crashkernel=1024M@1024M. Ça passe, mais au chargement, j'obtiens le message

          Could not find a free area of memory of n bytes - locate_hole failed
          
          

          … avec n variant selon les essais entre 9000, b000 et 3b6000. Google renvoie beaucoup d'entrées pour ce message mais peu d'explications concluantes. J'ai quand même lu quelque part que ce serait dû au fait que le système qui alloue de la mémoire le fait par la fin d'un bloc et que celui qui l'utilise le fait par le début et a besoin d'être aligné sur un multiple d'une page. J'ai donc passé le paramètre « crashkernel=1077633024@1024M » ce qui correspond à 403B6000 (1 Gio + 3b6000) et ça fonctionne. Mais avec la commande ci-dessus, j'obtiens cette fois :

          Could not put setup code above the kernel parameters
          
          

          … j'ai lu également que ça pouvait poser problème avec les bzImages. Je suis donc allé chercher directement l'image « vmlinux » fraîchement compilée dans le dépôt de mes sources. Et cette fois-ci :

          Invalid memory segment 0x1000000 - 0x1a9cfff
          
          

          Et je ne vois pas pourquoi. Mon noyau est compilé en relocatable et devrait donc être insensible à l'adresse d'implantation. J'ai changé PHYSICAL_START à 40000000h (1 Gio) à tout hasard et ai recompilé, mais j'obtiens le même message et les mêmes valeurs.

          Là, j'arrive un peu à court d'idées. Et oui, je tatonne, mais c'est faute de mieux.
          As-tu une idée ou un lien vers la documentation que je devrais suivre ?

          Merci.

          • [^] # Re: Deuxième PC?

            Posté par  . Évalué à 3.

            je suppose qu'il n'y a pas moyen d'envoyer cela par le réseau (quitte à utiliser le port Ethernet en point-à-point comme un vulgaire port série) ?

            netconsole

            • [^] # Re: Deuxième PC?

              Posté par  . Évalué à 2.

              C'est pourtant vrai ! J'avais fait un ls -l *console* à tout hasard, la prochaine fois je ferai un find.
              Merci pour l'info, je vais commencer par cela. Le kexec m'intéresse toujours cela dit. Si quelqu'un a des indices, je suis preneur.

              Merci à tous.

          • [^] # Re: Deuxième PC?

            Posté par  (site web personnel) . Évalué à 2.

            Commence par voir si tu arrives à dumper quelque chose avec le kernel fourni par la distribution en suivant les instructions de la distribution : http://fedoraproject.org/wiki/How_to_use_kdump_to_debug_kernel_crashes#Step_1:_Configuring_Kdump

            Une fois que ça marche, tu peux essayer avec ton noyal customisé. Si tu coinces, tu peux essayer de bissecter les options qui diffèrent entre ton noyau et celui de la distro.

            pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

            • [^] # Re: Deuxième PC?

              Posté par  . Évalué à 2.

              Ok, je suis en train de télécharger les packages. Je vais essayer.

              Parallèlement, j'ai mis en place netconsole, qui fonctionne. J'obtiens tous les messages y compris avec SysRq+C. Je n'ai pas encore rencontré de nouveau plantage. Il n'y a plus qu'à attendre que ça vienne, donc.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.