Proses zombie menggunakan CPU 100%

12

Sebuah proses zombie , yang tidak harus menggunakan sumber daya (RAM dan CPU), yang memonopoli sampai seluruh inti pada saya 8-core 64-bit Ubuntu 11.10 instalasi Desktop.

Ini adalah output dari 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>

... dan ini adalah kutipan dari 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

Beginilah proses zombie muncul:

  1. Saya membuka JAR Java yang disebut minecraft.jar . Peluncur ini mengunduh file JAR lain ke ~ / .minecraft / bin / minecraft.jar
  2. JAR itu dieksekusi ketika saya mengunci komputer saya dengan xscreensaver.
  3. Kemudian, saya memasukkan kata sandi saya untuk membuka kunci komputer, dan saya melihat bahwa jendela Minecraft dibekukan.
  4. Saya mencoba membunuhnya (PID 10317) dengan gnome-system-monitor. Itu menjadi zombie.
  5. kill -9 10317 tidak efektif.
  6. xkillhanya menutup jendela berjudul "Minecraft"; itu tidak menutup javaproses yang mendasarinya .

Informasi yang relevan:

  • Driver grafis adalah FGLRX , dan telah menyebabkan masalah terkenal dengan Unity of Ubuntu 11.04 dan Ubuntu 11.10 , termasuk penggunaan CPU yang kadang-kadang tinggi Xorgdan compiz.

Saya ingin tahu:

  1. Apa cara yang ada untuk menghancurkan proses ini javatanpa memulai kembali, jika ada?
  2. Mengapa masalah ini terjadi?
  3. Apa yang bisa saya lakukan untuk mencegah masalah ini terjadi lagi?
Deltik
sumber
1
Saya khawatir saya tidak bisa membantu Anda secara pribadi, tetapi saya memuji Anda karena melakukan pekerjaan dengan baik menjelaskan apa yang terjadi dan apa yang Anda coba sejauh ini!
nhinkle
7
"Hei, kawan-kawan aplikasi ini menghabiskan banyak waktu CPU. Ngomong-ngomong, ini ditulis dalam Java. Tidak tahu apakah keduanya berhubungan ???"
ta.speot.is
Kemungkinan besar itu berputar pada kunci.
Daniel R Hicks
Itu juga terjadi pada saya saat bermain, @RedGrittyBrick proses java java menjalankan minecraft jar dan zombie di dalam game adalah hal yang berbeda.
Falk

Jawaban:

8

Prosesnya telah diperbaiki init, jadi harus dituai (jika tidak, solusinya adalah membunuh orang tuanya). Tampaknya macet exit, berdasarkan WCHANbidang.

Mungkin sebenarnya melakukan sesuatu (seperti membuat dump inti) yang akan selesai dan akan hilang dengan sendirinya. Sayangnya, itu kemungkinan berputar di kernel karena driver yang rusak dan akhirnya, satu-satunya pilihan Anda akan reboot.

David Schwartz
sumber
Sudah lama sejak saya mengajukan pertanyaan ini, tetapi saya tidak dapat membuat kembali masalah saya, terutama setelah memperbarui FGLRX ke versi terbaru. Saya telah memilih ini sebagai jawaban terbaik karena ini menunjukkan driver yang rusak dan merupakan yang paling komprehensif.
Deltik
4

Proses zombie telah mati tetapi belum dibersihkan (menuai adalah istilah yang benar) dan karenanya killtidak berfungsi seperti proses normal. Prosesnya masih dalam tabel proses tetapi ketika itu adalah zombie, sumber daya telah dialokasikan.

Anda dapat mencoba mengirim SIGCHLDsinyal ke induk proses, jika tidak init seharusnya mengambilnya dan akan menuai akhirnya. Jika Anda ingin mempercepat prosesnya, Anda cukup reboot.

Garrett
sumber
1

Ini adalah bug kernel. Apakah Anda menggunakan ecryptfs untuk mengenkripsi direktori home Anda? Ada bug yang diajukan tentang hal itu di launchpad.net.

psusi
sumber
Tidak, saya mengenkripsi file secara manual di direktori home saya.
Deltik