You're probably doing wayyy too much in a signal handler. You're probably tripping over some half-created hash element or something. Remember, Perl signals are not reliable, and will break. For good alarm handling, look at Event or POE or something else. Not straight Perl.