SIGKILL init process (PID 1)
The Linux kernel deliberately forces a system crash if init
terminates (see http://lxr.free-electrons.com/source/kernel/exit.c?v=3.12#L501 and particularly the call to panic
therein). Therefore, as a safeguard, the kernel will not deliver any fatal signal to init
, and SIGKILL
is not excepted (see http://lxr.free-electrons.com/ident?v=3.12&i=SIGNAL_UNKILLABLE) (however, the code flow is convoluted enough that I'm not sure, but I suspect a kernel-generated SIGSEGV
or similar would go through).
Applying ptrace(2)
(the system call that strace
uses) to process 1 apparently disables this protection. This could be said to be a bug in the kernel. I am insufficiently skilled at digging around in the code to find this bug.
I do not know if other Unix variants apply the same crash-on-exit semantics or signal protection to init
. It would be reasonable to have the OS perform a clean shutdown or reboot, rather than a panic, if init
terminates (at least, if it does so by calling _exit
) but as far as I know, all modern Unix variants have a dedicated system call to request this, instead (reboot(2)
).