Re: Co s neKILLnutelnym procesem?

d.petr d.petr na post.cz
Středa Listopad 30 09:51:08 CET 2011


> ------------ Původní zpráva ------------
> Od: Pavel Kankovsky <peak na argo.troja.mff.cuni.cz>
> ----------------------------------------
> > Jsou ukončena obě RT-vlákna. Zůstane však původní hlavní vlákno
> > programu [...] Toto vlákno tedy zřejmě neběží, uvolní veškerou paměť,
> > bohužel ale ne např. obsazený port UDP [...] A tento pozůstatek
> > programu nejde KILLnout [...] Odstranit ho umím pouze restartem
> > celého stroje.
> 
> Podívejte se, co píše "ps l" ve sloupci WCHAN. Alternativně můžete zkoumat
> asi tak pátou položku od konce v /proc/PID/stat. A zkontrolujte, zda má
> skutečně pořád otevřené soubory a jmenovitě ten socket; místo lsof můžete
> použít "ls -l /proc/PID/fd".

Ale to jsou pěkné údaje!
ps l sloupec WCHAN vypadá stejně, jako /proc/PID/wchan. Je tam "oki_release" (bez uvozovek). Napadá mě spojitost s CANovským řadičem OKI, který v zařízení pracuje.
/proc/PID/fd je prázdný. Za normálního běhu v něm opravdu je mj. jeden socket (to bude UDP) i soubor CANovského ovladače (ovladač CANu zde ještě nepoužívá sokety, ale znakové zařízení).
/proc/PID/stat obsahuje: 907 (LCPU) S 906 901 896 34816 901 4195588 239 0 3 0 231 621 0 0 20 0 1 0 8234 0 0 4294967295 0 0 0 0 0 0 0 0 0 3222659392 0 0 17 0 0 0 0.
Je zajímavé, že když pak spustím další instanci programu, CAN normálně funguje, ale komunikace UDP ne.
Jen pro úplnost: jádro je 2.6.21.6-rt21 s několika doplněnými ovladači, jako zrovna třeba ten CAN.


> Také může být poměrně užitečné zkusit vyrobit nějaký minimalistický
> příklad, který ten stav vyvolává, a zkusit ho na jiných strojích.

Použitelnými strojky jsou jen úplně stejná zařízení s ARMem se stejnou SW výbavou a konfigurací, ta by se chovala úplně stejně (předpokládám).

PM


Další informace o konferenci Linux