Prior to 5.8, it was never safe to call die from within a real signal handler. ($SIG{__WARN__} and $SIG{__DIE__} aren't real signal handlers as such, though calling die from within them can cause some interesting things to happen as well) If you have safe signals enabled for 5.8 (and it may be the default these days, I really don't remember) then it will be safe.