in reply to Determining process cause of death

From perlipc

...doing nearly anything in your handler could in theory trigger a memory fault and subsequent core dump.

In your case I would simply do this:
while (1) { $self->check_start(); $self->check_run(); # Sleep 1/10 second select(undef, undef, undef, 0.1); 1 while (waitpid(-1, &WNOHANG) > 0); }
--perlplexer