in reply to Problem with Net::Server::Prefork - Server died w/o apparent reason

The first thing that came to mind was an untrapped SIGPIPE, but it appears that the Net::Server::PreFork handles that for you.

Could there be another fatal signal getting sent on your system?

Here's a list of default actions for signals on linux systems taken from kernel/signal.c (kernel 2.6.21.1).

+--------------------+-----------------+ | POSIX signal | default action | +--------------------+-----------------+ | SIGHUP | terminate | | SIGINT | terminate | | SIGQUIT | coredump | | SIGILL | coredump | | SIGTRAP | coredump | | SIGABRT/SIGIOT | coredump | | SIGBUS | coredump | | SIGFPE | coredump | | SIGKILL | terminate(+) | | SIGUSR1 | terminate | | SIGSEGV | coredump | | SIGUSR2 | terminate | | SIGPIPE | terminate | | SIGALRM | terminate | | SIGTERM | terminate | | SIGCHLD | ignore | | SIGCONT | ignore(*) | | SIGSTOP | stop(*)(+) | | SIGTSTP | stop(*) | | SIGTTIN | stop(*) | | SIGTTOU | stop(*) | | SIGURG | ignore | | SIGXCPU | coredump | | SIGXFSZ | coredump | | SIGVTALRM | terminate | | SIGPROF | terminate | | SIGPOLL/SIGIO | terminate | | SIGSYS/SIGUNUSED | coredump | | SIGSTKFLT | terminate | | SIGWINCH | ignore | | SIGPWR | terminate | | SIGRTMIN-SIGRTMAX | terminate | +--------------------+-----------------+ | non-POSIX signal | default action | +--------------------+-----------------+ | SIGEMT | coredump | +--------------------+-----------------+

If you aren't running linux, your vendor should have a similar list available.


TGI says moo

  • Comment on Re: Problem with Net::Server::Prefork - Server died w/o apparent reason
  • Download Code

Replies are listed 'Best First'.
Re^2: Problem with Net::Server::Prefork - Server died w/o apparent reason
by psini (Deacon) on Jun 16, 2008 at 19:22 UTC

    Yes, I'm running linux (Debian Sarge) and I don't know of anything on the system that could signal to my process.

    Somebody suggested that the kernel could have SIGKILLed me if I ran out of memory but I don't really beleive this is the case for the server has plenty of memory and if my program had a memory leak I should have found it before (the other server has less memory, more load and a longer uptime).

    Moreover, AFAIK on a SIGKILL Net::Server should write in syslog that it is shutting down, and it didn't.

    Careful with that hash Eugene.