Azi am avut o discutie foarte tare cu suportul tehnic de la un vendor. Care vine niste “appliance”-uri de ruleaza un Linux d’al lor, un RHEL3 stripped down si rebranduit.
De ceva vreme la boot raman agatate niste procese in D state, asa zisele zombie processes. Si ridic io tichet sa-i intreb pe aia de la vendor cum rahat scap de procesele alea.
Si vine raspunsul de la un support engineer d’acolo:
“Please start the debug when all is normal and let the zombie appear and than kill them.”
Acu inca nu’s foarte sigur daca e de plans sau de ras.
Ca fapt divers, pe Linux o data ce un proces a intrat in D-state… numai rebootul te mai salveaza, desi fooooarte fooooarte rar se mai intampla sa functioneze un killall -9 pe proces. Da doar atunci cand sunt planetele aliniate cum trebuie.
Funny, eh ?
Side comment: Din D state te scoate doar rebootul sau daca isi revine device-ul dupa care asteapta procesul (de obicei nu e cazul), SIGKILL e fix degeaba, kernelul nu intrerupe syscallul ca risca sa-si buleasca structurile de memorie. Destul de misto discutia de aici: http://linuxgazette.net/issue83/tag/6.html, n-am gasit rapid un document relevant prin documentatia kernelului, dar recunosc ca nici n-am cautat prea tare.
Side comment 2: zombie processes sunt Z state, treburi diferite, dar indienii aia probabil nu-s asa familiarizati cu literele astea, le mai confunda :)
Io am zis ca e zombie process, din cauza ca io asa stiam ca se cheama procesele in D-state. Acu ca ala m-a crezut pe cuvant e o alta discutie…
Am primit un strace static de la ei si la cele 4 procese moarte nu apare nimic la strace, nici macar syscall-ul dupa care stau.
Intre timp imi pregatesc railgun-ul… ca nu se stie cand invie zombie aia :))
Reiau si eu ideea,
“D” este ‘uninterruptible sleep’ sau ‘waiting for I/O’;
“Z” este ‘zombie’ sau ‘idiotul de tactu’ a uitat sa zica wait();’ :-)
“Z” dispar cand moare parintele care i-a creat; “D” mor cand (si daca), cum a zis si antevorbitorul meu, isi revine operatiunea de I/O contractata.
Interesant e ca ala e un firewall — si deci cum ai putea sa ajungi “dead in I/O” vorbind cu placa de retea? (presupunem ca nimeni nu si-a bagat coada in PCI BIOS :D )
@Dexter