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

David LeBauer
la source
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.

poolie
la source
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.

Marius Gedminas
la source