Is there some cases in which SIGKILL will not work?
Asked Answered
A

3

10

Are there any cases where an application running on Linux, which has not blocked signal SIGKILL, will not get killed on firing SIGKILL signal?

Accrete answered 22/12, 2011 at 7:2 Comment(1)
On Unix SE: unix.stackexchange.com/questions/5642/…Hinny
B
13

SIGKILL cannot be blocked or ignored (SIGSTOP can't either).

A process can become unresponsive to the signal if it is blocked "inside" a system call (waiting on I/O is one example - waiting on I/O on a failed NFS filesystem that is hard-mounted without the intr option for example).

(Another side case is zombie processes, but they're not really processes at that point.)

Bates answered 22/12, 2011 at 7:5 Comment(4)
Does that mean when an user application makes a system call it blocks all the signals till that system call returns ?Accrete
It is not "blocked", it's in the "uninterruptible sleep (D)" state. see #768051Lifton
@Mandar, no. you can't "block all the signal". The D state is something internal to kernel (e.g. Reading from CD-ROM, syncing to disk etc..)Lifton
What you're describing is called "Disk Sleep", indicated by a "D" in the process status.Ibo
R
7

Yes, when the process is blocked in kernel space, e.g. reading on a blocked NFS file system, or on a device which does not respond.

Riggle answered 22/12, 2011 at 7:5 Comment(0)
U
5

Check with ps a (or you can use other flags as well) the process state. If a process state is

D : uninterruptible sleep (usually IO)

then you cannot kill that process.
As others mentioned, and as it is defined, this is usually caused by a stuck I/O, for example process waiting to do I/O to a disconnected NFS file system.

Unanimous answered 17/10, 2017 at 8:13 Comment(1)
The SIGKILL signal will still be pending and if somehow the system gets unstuck on that process it will automatically handle it (exiting the process) upon return to userspace.Roseleeroselia

© 2022 - 2024 — McMap. All rights reserved.