kill -KILL fails to kill process

Oliver Fromme olli at lurza.secnetix.de
Fri Sep 19 18:12:14 UTC 2008


Steve Franks wrote:
 > Which I thought was impossible.  Neophyte question, no doubt, but
 > googling was less than helpful (which probably means I'm fubar, no
 > doubt).  Anyway, I have a certain common X app (xmms) that likes to
 > hang (since my last buildworld, it seems) when when it's right about
 > to open a file-choosing dialog.  The only way to get rid of it is to
 > reboot.  Now, given the behavior, I'd have to suspect something
 > underlying as the true source of the problem, but shouldn't kill kill
 > it anyway - I mean, isn't there some way to kill a process that's
 > stuck waiting on a child process?  I haven't figured out how to "ps
 > -ax grep | some neublous file dialog process" yet...so I'm sort of
 > stuck wanting to kill the parent...

If you can't kill a process (even with SIGKILL), it means
that the process currently can't be put on the run queue,
because only processes that are able to run can receive
signals.  Given that, such a situation usually has one of
these three reasons:

1.  The process hangs in "disk wait" (flag "D" in ps' STAT
    column).  This often means there's a hardware problem
    with your disk or controller (or a driver bug), or a
    network problem if you use NFS.

2.  The process was suspended (SIGSTOP).  In this case
    there is the flag "T" in ps' STAT column.  Try sending
    a SIGCONT to the process.

3.  The process terminated, but the parent process failed
    to pick up the exit code.  In this case, the process
    needs to retain an entry in the process table (shown
    by ps) in order to record the exit code until it is
    picked up, even though the process itself is gone.
    Such a "dead" entry in the process table is called a
    zombie process.  In ps' STAT column there is the "Z"
    flag.  This usually indicates a programming error
    (a.k.a. bug) in the parent process.  You can get rid
    of the zombie by killing the parent process.  Then the
    zombie will be inherited by the next process in the
    hierarchy (up to the init process 1 if required) which
    will then pick up the exit code and release the process
    entry.

There can be other reasons on occasion, but those three are
the most common ones.  Simply look at the STAT column in
the ps(1) output for the process in question.  It will tell
you the reason why the process is stuck.

Best regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

Passwords are like underwear.  You don't share them,
you don't hang them on your monitor or under your keyboard,
you don't email them, or put them on a web site,
and you must change them very often.


More information about the freebsd-questions mailing list