Процесс зомби с использованием 100% CPU

Процесс зомби, который не должен использовать какие-либо ресурсы (RAM и CPU), загружает все ядро на моей 8-ядерной 64-битной установке Ubuntu 11.10 Desktop.

Это вывод 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>

... и вот выдержка из 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

Вот как возник процесс зомби:

  1. Я открыл Java JAR под названием minecraft.jar. Этот модуль запуска загружает другой файл JAR в ~/.minecraft/bin/minecraft.jar
  2. Этот JAR выполнялся, когда я заблокировал свой компьютер с xscreensaver,
  3. Затем я ввел свой пароль, чтобы разблокировать компьютер, и увидел, что окно Minecraft было заморожено.
  4. Я пытался убить его (PID 10317) с gnome-system-monitor, Это стало зомби.
  5. kill -9 10317был неэффективен.
  6. xkill закрылось только окно под названием "Майнкрафт"; это не закрыло основной java процесс.

Релевантная информация:

  • Графический драйвер - FGLRX, и он вызвал пресловутые проблемы с Unity of Ubuntu 11.04 и Ubuntu 11.10, включая иногда высокую загрузку ЦП Xorg а также compiz,

Я хочу знать:

  1. Какой способ разрушить этот процесс java без перезагрузки, если есть?
  2. Почему эта проблема происходит?
  3. Что я могу сделать, чтобы эта проблема не повторилась?

4 ответа

Решение

Процесс уже переписан на init, так что его следует пожинать (иначе, скорее всего, решение будет убить его родителя). Похоже, застрял в exit, на основе WCHAN поле.

На самом деле он может что-то делать (например, создавать дамп ядра), который закончится и сам уйдет. К сожалению, он, вероятно, вращается в ядре из-за сломанного драйвера и, в конечном счете, единственным вариантом будет перезагрузка.

Ты пытался sudo kill -SIGCHLD 1? Если это не работает, вам нужно перезагрузить систему.

Подробнее об этом: https://stackoverflow.com/questions/6335730/zombie-process-cant-be-killed и https://serverfault.com/questions/89759/init-never-reaping-zombie-defunct-processes

Процессы зомби умерли, но еще не были очищены (пожинать - правильный термин) и, таким образом, kill не работает на них как обычный процесс. Процесс все еще находится в таблице процессов, но когда это зомби, ресурсы были перераспределены.

Вы можете попробовать отправить SIGCHLD подайте сигнал родителю процесса, в противном случае init должен был его поднять и в конце концов пожнет его. Если вы хотите ускорить процесс, вы можете просто перезагрузиться.

Это ошибка ядра. Вы используете ecryptfs для шифрования вашего домашнего каталога? Об этом сообщается об ошибке на launchpad.net.

Другие вопросы по тегам