On Sat, Jan 10, 2009 at 11:45:03AM +0100, Federico Golfrè Andreasi wrote:
Infact process 2 is executed from process 1 using an MPI routine called MPI_Comm_spawn.
Unless MPI_Comm_spawn is doing something out of the ordinary, then process 2 is a direct child of process 1. You can verify whether this is the case by executing "ps axl" and comparing PID and PPID (parent process) for the two processes. If the signal is not delivered, then the MPI library has probably arranged that it be blocked / ignored. Try the following: right after calling MPI_Init in the parent, use sigprocmask() to explicitly unblock SIGCHLD signal and use sigaction() to install the signal handler. Otherwise, try finding a supported way of doing this, e.g., by asking on a mailing list dedicated to your MPI implementation.