[SunHELP] How to kill a kernel-blocked process ?

Nicholas Dronen ndronen at frii.com
Mon Jan 21 13:09:49 CST 2002


On Mon, Jan 21, 2002 at 07:13:02PM -0000, DAUBIGNE Sebastien  - BOR (   SDaubigne at bordeaux-bersol.sema.slb.com ) wrote:
> I'm unable to kill a multi-threaded java process. The process is sleeping,
> but doesn't catch any signal, including SIGKILL.
> "ps" says the process is sleeping :
> 
> # ps -lfp 24185
> F S      UID   PID  PPID  C PRI NI     ADDR     SZ    WCHAN    STIME TTY
> TIME CMD
>  8 S     root 24185     1  0  40 20 772c0198   9399 772c0210 11:10:37 ?
> 8:33 /usr/java1.1/bin/..//bin/sparc/nati
> 
> However, the "-L" option tells that each of the 21 LWP is stopped ("T"
> state), except the 18th, which is sleeping ("S").
> It seems each thread is blocked in the kernel (bloking syscall).
> "truss" cannot contol the process, but the "pflags" command tells that some
> LWP are waiting for semaphore conditions, others
> are waiting for connexion or datas from TCP sockets.
> Using lsof, I tried to identify and connect to each of the 3 sockets the
> process is listening on, but it doesn't help. 
> I also tried to identify and kill each of the local TCP peers process, with
> no result.
> 
> I suspect some deadlock in the semaphore conditions.
> Do I have any chance to kill the process witout rebooting ?

Your chances are small.  If a process doesn't die in response
to a SIGKILL, you usually have no choice but to reboot.  If you
do reboot, I suggest forcing a dump on the system while you're
at it and examining the kernel stack trace of the thread later.

Regards,

Nicholas Dronen



More information about the SunHELP mailing list