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