Processus Zombie utilisant 100% CPU

12

Un processus zombie , qui ne devrait utiliser aucune ressource (RAM et CPU), monopolise un cœur entier sur mon installation Ubuntu 11.10 Desktop 8 bits 64 bits.

C'est la sortie de ps -el|grep Z:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 Z  1000 10317     1 99  80   0 -     0 exit   ?        19:27:15 java <defunct>

... et voici un extrait de top:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                
10317 deltik    20   0     0    0    0 Z  100  0.0   1170:17 java <defunct>
 1424 root      20   0  612m 193m 158m S   14  2.4 287:17.11 Xorg
12580 deltik    20   0  710m 135m  46m S    5  1.7  27:31.07 compiz

C'est ainsi que le processus zombie a vu le jour:

  1. J'ai ouvert un JAR Java appelé minecraft.jar . Ce lanceur télécharge un autre fichier JAR dans ~ / .minecraft / bin / minecraft.jar
  2. Ce fichier JAR était en cours d'exécution lorsque j'ai verrouillé mon ordinateur avec xscreensaver.
  3. Ensuite, j'ai entré mon mot de passe pour déverrouiller l'ordinateur et j'ai vu que la fenêtre Minecraft était gelée.
  4. J'ai essayé de le tuer (PID 10317) avec gnome-system-monitor. C'est devenu un zombie.
  5. kill -9 10317 était inefficace.
  6. xkillseulement fermé la fenêtre intitulée "Minecraft"; cela n'a pas clôturé le javaprocessus sous-jacent .

Les informations pertinentes:

  • Le pilote graphique est FGLRX , et il a causé des problèmes notoires avec Unity d' Ubuntu 11.04 et Ubuntu 11.10 , y compris parfois une utilisation élevée du processeur de Xorget compiz.

Je veux savoir:

  1. De quelle manière existe-t-il pour détruire ce processus javasans redémarrer, le cas échéant?
  2. Pourquoi ce problème se produit-il?
  3. Que puis-je faire pour éviter que ce problème ne se reproduise?
Deltik
la source
1
J'ai bien peur de ne pas pouvoir vous aider personnellement, mais je vous félicite d'avoir fait du bon travail en expliquant ce qui s'est passé et ce que vous avez essayé jusqu'à présent!
nhinkle
7
"Hé les gars, cette application utilise beaucoup de temps CPU. Au fait, elle est écrite en Java. Je ne sais pas si les deux sont liés ???"
ta.speot.is
Très probablement, il tourne sur une serrure.
Daniel R Hicks
Cela m'arrive également en jouant, @RedGrittyBrick un processus java zombie exécutant le pot minecraft et un zombie à l'intérieur du jeu sont des choses différentes.
Falk

Réponses:

8

Le processus a déjà été réparé init, il devrait donc être récolté (sinon, la solution serait probablement de tuer son parent). Il semble être coincé exit, basé sur le WCHANterrain.

Il peut en fait faire quelque chose (comme créer un vidage de mémoire) qui se terminera et disparaîtra de lui-même. Malheureusement, il tourne probablement dans le noyau à cause d'un pilote cassé et, finalement, votre seule option sera de redémarrer.

David Schwartz
la source
Cela fait un moment que je n'ai pas posé cette question, mais je n'ai pas pu recréer mon problème à nouveau, surtout après la mise à jour de FGLRX vers la dernière version. J'ai choisi cela comme la meilleure réponse car il indique le pilote cassé et est le plus complet.
Deltik
4

Les processus zombies sont morts mais n'ont pas encore été nettoyés (récolté est le terme correct) et killne fonctionne donc pas sur eux comme un processus normal. Le processus est toujours dans la table de processus, mais lorsqu'il s'agit d'un zombie, les ressources ont été désallouées.

Vous pouvez essayer d'envoyer un SIGCHLDsignal au parent du processus, sinon init aurait dû le capter et le récupérer éventuellement. Si vous souhaitez accélérer le processus, vous pouvez simplement redémarrer.

Garrett
la source
1

Ceci est un bug du noyau. Utilisez-vous ecryptfs pour crypter votre répertoire personnel? Un bug a été déposé à ce sujet sur launchpad.net.

psusi
la source
Non, je crypte manuellement les fichiers de mon répertoire personnel.
Deltik