--- asterisk.c.orig 2005-08-31 12:57:48.000000000 +0200 +++ asterisk-1.0.7.dfsg.1/asterisk.c 2005-09-05 15:36:40.000000000 +0200 @@ -188,7 +186,10 @@ int res; struct rusage rusage; int status; - void (*prev_handler) = signal(SIGCHLD, null_sig_handler); + sigset_t sigs; + sigemptyset(&sigs); + sigprocmask(SIG_BLOCK,&sigs,NULL); /* Only block SIGCHLD so that we receive them after this */ +/* void (*prev_handler) = signal(SIGCHLD, null_sig_handler); */ pid = fork(); if (pid == 0) { /* Close file descriptors and launch system command */ @@ -215,7 +216,8 @@ ast_log(LOG_WARNING, "Fork failed: %s\n", strerror(errno)); res = -1; } - signal(SIGCHLD, prev_handler); +/* signal(SIGCHLD, prev_handler); */ + sigprocmask(SIG_UNBLOCK,&sigs,NULL); return res; }