[erlang-questions] run_erl.c question in R11B-4

Serge Aleynikov <>
Mon Apr 2 21:39:34 CEST 2007


Hi,

I see that a SIGCHLD handler was added in run_erl.c in the R11B-4. 
However the implementation of the signal handler function 
(catch_sigchild) has nothing in the body.

I believe it should be:

--- ./erts/etc/unix/run_erl.c.orig      2006-11-22 10:57:35.000000000 -0500
+++ ./erts/etc/unix/run_erl.c   2007-04-02 15:23:45.000000000 -0400
@@ -676,6 +676,10 @@

  static void catch_sigchild(int sig)
  {
+  int stat;
+  status("Child terminated - exiting\n");
+  wait(&stat);  /* Ensure that a child entry in the process table is 
cleared, and release child's PID */
+  exit(2);
  }


This way the death of the emulator will cause the death of run_erl. 
Otherwise in presence of the -heart option it's possible to get in a 
situation when run_erl is not properly restarted (*).

Serge

(*) http://www.erlang.org/ml-archive/erlang-questions/200601/msg00473.html

-- 
Serge Aleynikov
Routing R&D, IDT Telecom
Tel: +1 (973) 438-3436
Fax: +1 (973) 438-1464



More information about the erlang-questions mailing list