Pourquoi mon terminal se bloque-t-il?


11

Parfois, lorsque mon terminal se bloque et qu'il ne me laisse pas taper. Je ne peux identifier aucune cause, ni comment diagnostiquer. Aucune suggestion?

Merci!

Terminal GNOME 2.30.2 sur Ubuntu 10.04


2
généralement, lorsque le terminal se bloque, cela est dû à une autre application en arrière-plan utilisant trop de ressources, comme le processeur ou les E / S de disque. Si vous utilisez topun terminal, vous devriez pouvoir localiser facilement le problème.
— RolandiXor

@roland - sonne comme un catch-22, mais de bons conseils car parfois, lorsqu'un terminal est gelé, je peux en ouvrir un autre et cela fonctionnera.
— David LeBauer

N'est-ce pas? :) C'est un peu un catch-22, mais cela fonctionne souvent pour moi.
— RolandiXor

Réponses:


14

Une bonne façon générale de diagnostiquer les blocages mystérieux:

  1. ouvrir un (autre) terminal et utiliser ps axo pid,wchan:32,cmdpour trouver l'autre identifiant de processus
  2. notez la wchancolonne, qui devrait vous dire si elle est coincée dans le noyau
  3. exécuter l' sudo strace -p PIDinsertion du pid de ce processus; collez-le dans un rapport de bogue ou une question

S'il y a autre chose qu'un simple tiret dans la colonne wchan, alors le processus fait que le noyau fait quelque chose. Quelques valeurs typiques:

  • futex_wait_queue_me - en attente sur un futex pour un autre thread dans le même processus
  • poll_schedule_timeout - en attente de communication réseau ou interprocessus, ou juste dormir un moment
  • pipe_wait - lire / écrire une pipe

Il y a des milliers de possibilités, donc je ne peux pas toutes les énumérer. Voir Qu'est-ce que le "canal d'attente" d'un processus? pour plus.


Très utile pour le suivi de bogues à usage général. Pouvez-vous mettre à jour votre réponse avec une description détaillée? Quel message dans la colonne wchan indique un programme coincé dans le noyau?
— Salih Emin

Merci, Salih. Peut-être que nous devrions avoir une autre question sur la façon générale de diagnostiquer les blocages?
— poolie

Si les gens sont curieux de connaître d'autres valeurs wchan, veuillez ajouter un commentaire.
— poolie

N'importe quel wchanmoyen le processus est en attente dans le noyau. S'il y reste longtemps et sans raison valable comme écouter le réseau io, il est bloqué. ;)
— poolie

25

Avez-vous appuyé sur Ctrl + S par hasard? C'est la touche de pause du terminal qui arrête toute sortie jusqu'à ce que vous appuyiez sur Ctrl-Q pour reprendre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.