in reply to Signals and END block

What signal is sent to a process when the machine is restarted (KILL?)

On a Linux box a SIGTERM is sent. Any processes that don't terminate on the SIGTERM are then sent a SIGKILL

Does the KILL signal cause the END block to be executed (since it cannot be caught)?

I don't think it will execute the END block on a SIGKILL

Is it 100% sure the END block is executed using the above code or might there be other situations in which this fails?

If your Perl interpreter exits abnormally, e.g. you hit a Perl bug, it will exit without executing the end block. Of course this is very rare if you are running a standard release of Perl.