kill iftop
Dan Lukes
dan at obluda.cz
Tue Mar 22 19:41:30 CET 2005
Pav Lucistnik napsal/wrote, On 03/22/05 13:55:
>> >>5853 root 76 0 2700K 2124K STOP 3 0:00 0.00% 0.00% iftop
>> > ^^^^^^
>> >>ked spravim kill -9 5853 proces ostava bezat
>>
>> > Ten proces je zastaveny (SIGSTOP), tudiz nezpracovava signaly ktere
>> > zasila prikaz kill.
>>
>> Skutecne toto pravidlo plati i pro SIGKILL ?
> Na FreeBSD 4 tomu tak tusim bylo vzdy, ze STOPnuty proces nereagoval na
> signaly (vcetne KILLu) ihned, ale ze stoji nekde ve fronte a doruci se
> az pri rozebehnuti. Takze v praxi poslat KILL STOPnutemu procesu
> znamena, ze se nic nestane, ale ihned po poslani CONT bude proces
> sestrelen.
Hm, takhle ja to neznam.
Nezbylo nez zacit pokusovat a cucet do zdrojaku.
Nejprve na 4.x
A nedari se mi takove chovani vyvolat ani experimentalne.
Kdyz spustim "top &" tak ten prakticky okamzite skonci ve "STOP" stavu:
Vypis top (jinym nez je to zastavene):
41308 root 4 0 1872K 1020K STOP 0:00 0.00% 0.00% top
Vypis ps -ax:
41308 p0 T 0:00.01 top
Presto na kill -9 41308 reaguje okamzite.
Zkouseno na 4.11-RELEASE, 4.10-RELEASE-p2 a 4-STABLE
Koukanim do kodu (sys/kern/kern.sig:psignal) se mi navic zda, ze se tam
vyslovne pravi, ze SIGKILL znamena implicitni CONTINUE
Ale, na 5.x (konkretne 5-STABLE) je to trochu jine. Zpracovani signalu
je, kvuli implementaci kernel-level threadu prepracovane, nicmene, kod
obdobny tomu z 4.x lze najit ve stejnem souboru, ale ve funkci
do_tdsignal().
Komentar v prislusnem miste vyslovne tvrdi "SIGKILL sets process
running". Podle vseho by se to tedy melo chovat stejne jako u 4.x
Stejna prakticka zkouska ale tentokrat vychazi nejednoznacne - z deseti
identickych pokusu se osmkrat podari STOPnuty proces bez problemu
sestrelit ve stopnutem stavu, ve dvou ale proces nereaguje.
Bohuzel, nedari se mi najit zadny vztah kdy se to povede a kdy ne.
Jediny vztah, ktery jsme objevil je, ze pokud po "top &" (a jednom
enteru navic) shell vypise "stopped top" tak proces lze sestrelit bez
problemu, pokud to nevypise, tak nikoliv.
A ted uz se mi nejak nedari problem vyvolat. Ze zoufalstvi jsem dokonce
nainstaloval i onen iftop, nicmene, i ten lze ve STOP stavu KILLnout.
Takze, podle me je spravny stav takovy, ze SIGKILL ukoncuje proces bez
dalsich podminek. Na 4.x to tak podle vseho funguje vzdy, na 5.x
vetsinou. Osobne jsem presvedcen, ze skutecne jde o chybu zpracovani
signalu v kernelu. SIGKILL by mel zlikvidovat proces bez dalsich
podminek. Pripustny je pouze stav "zombie", ktery ale pouze technickou
pomuckou uzivanou pro korektni koordinaci parent-child procesu.
Podobnym problemem se zabyval PR 72979, nicmene, neslo o uplne totozny
problem a tam se domnivaji, ze vec vyresili.
No, obavam se, ze tento zaver puvodniho tazatele prilis nepotesi ...
Dan
More information about the Users-l
mailing list