Linux – kill unresponsive process

killlinux-kernel

According to top, process named pccardd loads my CPU nearly 100%:

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                                    
  530 root      20   0     0    0    0 R  96.6  0.0  62:01.52 pccardd    

According to ps, the process is running state:

root@T60:~# ps -o pid,ppid,command,state,uid,pcpu -p 530
  PID  PPID COMMAND                     S   UID %CPU
  530     2 [pccardd]                   R     0  0.2
root@T60:~# 

If I try to kill the pccardd with SIGTERM or SIGKILL signals, then nothing happens. I am aware that kill -9 may not work immediately, but I have waited well over an hour. Is it possible that pccardd process executes some system calls and thus SIGKILL signal is blocked? I tried to ensure this with strace, but I can't:

root@T60:~# strace -p 530
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
root@T60:~# 

Is there a way to kill this pccardd process or am I forced to reboot the machine?

Best Answer

The only ways for a process to receive a SIGKILL and still remain are:

  1. The process is in uninterruptable sleep state (denoted as D).
  2. The process is a zombie (denoted as Z).
  3. It's a kernel process.

The brackets ([]) around the process name in the ps output would indicate #3, it's a kernel process.

So you can't kill it. You also can't strace the kernel either.

The only possible solution you might have is to remove the module associated with this process. However I do not know what that module is. I'd also check dmesg for related messages, and search the web for bugs.

Related Question