[sr-dev] git:master:6af11bf9: Merge pull request #1101 from codyherzog/master

GitHub noreply at github.com
Fri Apr 28 08:36:00 CEST 2017


Module: kamailio
Branch: master
Commit: 6af11bf9858921deb74cce351013b734e1b29a6f
URL: https://github.com/kamailio/kamailio/commit/6af11bf9858921deb74cce351013b734e1b29a6f

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: GitHub <noreply at github.com>
Date: 2017-04-28T08:35:55+02:00

Merge pull request #1101 from codyherzog/master

core: Don't terminate on harmless SIGCHLD.

---

Modified: src/main.c

---

Diff:  https://github.com/kamailio/kamailio/commit/6af11bf9858921deb74cce351013b734e1b29a6f.diff
Patch: https://github.com/kamailio/kamailio/commit/6af11bf9858921deb74cce351013b734e1b29a6f.patch

---

diff --git a/src/main.c b/src/main.c
index 7781901..3fdf070 100644
--- a/src/main.c
+++ b/src/main.c
@@ -675,6 +675,7 @@ void handle_sigs(void)
 {
 	pid_t	chld;
 	int	chld_status;
+	int	any_chld_stopped;
 	int memlog;
 
 	switch(sig_flag){
@@ -730,7 +731,9 @@ void handle_sigs(void)
 			break;
 
 		case SIGCHLD:
+			any_chld_stopped=0;
 			while ((chld=waitpid( -1, &chld_status, WNOHANG ))>0) {
+				any_chld_stopped=1;
 				if (WIFEXITED(chld_status))
 					LM_ALERT("child process %ld exited normally,"
 							" status=%d\n", (long)chld,
@@ -747,6 +750,16 @@ void handle_sigs(void)
 								" signal %d\n", (long)chld,
 								 WSTOPSIG(chld_status));
 			}
+
+			/* If it appears that no child process has stopped, then do not terminate on SIGCHLD.
+			   Certain modules like app_python can run external scripts which cause child processes to be started and
+			   stopped. That can result in SIGCHLD being received here even though there is no real problem. Therefore,
+			   we do not terminate Kamailio unless we can find the child process which has stopped. */
+			if (!any_chld_stopped) {
+				LM_INFO("SIGCHLD received, but no child has stopped, ignoring it\n");
+				break;
+			}
+
 #ifndef STOP_JIRIS_CHANGES
 			if (dont_fork) {
 				LM_INFO("dont_fork turned on, living on\n");




More information about the sr-dev mailing list