Co s neKILLnutelnym procesem?

Libor Chocholaty libor_ml1 na mts.cz
Úterý Listopad 29 11:16:36 CET 2011


On 11/29/2011 09:18 AM, d.petr wrote:
> Dobrý den,
> projevila se mi opakovatelná zvláštnost - proces, který nejde KILLnout. Víte-li někdo, co s tím, rád se poučím.
>
> Jak k tomu dochází:
> Na svém ARM spustím z 'mc' program s defaultovou prioritou (tzn. spustí se 'sh' a ten program). Program si otevře 2 vlákna s prioritou RT. Jedno z těch RT-vláken se pokusí o přístup do paměti mimo prostor programu. Tím způsobí chybu, kterou by, dle mého, mělo jádro vyřešit zlikvidováním všech vláken programu, po té by se ukončil 'sh' a obnovil 'mc'. To se ovšem nestane.
>
> Následky:
> Jsou ukončena obě RT-vlákna. Zůstane však původní hlavní vlákno programu (sleduji programem 'top -H'; PID patří původnímu hlavnímu vláknu, další hodnoty jsou PR=20, NI=0, VIRT=RES=SHR=0, S="S", %CPU=%MEM=0). Toto vlákno tedy zřejmě neběží, uvolní veškerou paměť, bohužel ale ne např. obsazený port UDP (hlavní vlákno při spuštění otevřelo serverovou stranu komunikace UDP).
> A tento pozůstatek programu nejde KILLnout ani v 'top', ani příkazem killall, ani 'kill PID', ani použitím 'kill -9 PID' (všechny pokusy o zničení spouštím jako root, program byl také spuštěn rootem). Odstranit ho umím pouze restartem celého stroje.
>
> Ví někdo, jak na podobného nezmara?

Nebylo by vhodne doplnit nezmara o uvolneni socketu v pripade padu vlakna?
Libor



Další informace o konferenci Linux