Module: kamailio
Branch: master
Commit: 6af11bf9858921deb74cce351013b734e1b29a6f
URL: https://github.com/kamailio/kamailio/commit/6af11bf9858921deb74cce351013b73…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: GitHub <noreply(a)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/6af11bf9858921deb74cce351013b73…
Patch: https://github.com/kamailio/kamailio/commit/6af11bf9858921deb74cce351013b73…
---
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");
Module: kamailio
Branch: master
Commit: 1c5e166001306a1a9d9d8412f0a54910093109cb
URL: https://github.com/kamailio/kamailio/commit/1c5e166001306a1a9d9d8412f0a5491…
Author: codyherzog <cherzog(a)intouchhealth.com>
Committer: codyherzog <cherzog(a)intouchhealth.com>
Date: 2017-04-27T14:04:35-07:00
core: Don't terminate on harmless SIGCHLD.
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 even though there is no real problem.
Therefore, we do not terminate Kamailio unless we can find the child
process which has stopped.
---
Modified: src/main.c
---
Diff: https://github.com/kamailio/kamailio/commit/1c5e166001306a1a9d9d8412f0a5491…
Patch: https://github.com/kamailio/kamailio/commit/1c5e166001306a1a9d9d8412f0a5491…
---
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");
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 even though there is no real problem.
Therefore, we do not terminate Kamailio unless we can find the child
process which has stopped.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/1101
-- Commit Summary --
* core: Don't terminate on harmless SIGCHLD.
-- File Changes --
M src/main.c (13)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/1101.patchhttps://github.com/kamailio/kamailio/pull/1101.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/1101
<!--
Kamailio Project uses GitHub Issues only for bugs in the code or feature requests.
If you have questions about using Kamailio or related to its configuration file,
ask on sr-users mailing list:
* http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
If you have questions about developing extensions to Kamailio or its existing
C code, ask on sr-dev mailing list
* http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
Please try to fill this template as much as possible for any issue. It helps the
developers to troubleshoot the issue.
If you submit a feature request (or enhancement), you can delete the text of
the template and only add the description of what you would like to be added.
If there is no content to be filled in a section, the entire section can be removed.
You can delete the comments from the template sections when filling.
You can delete next line and everything above before submitting (it is a comment).
-->
### Description
<!--
Explain what you did, what you expected to happen, and what actually happened.
-->
```
We are using the functions:
replace_body("RTP/AVP 96 97 0 101 98", "RTP/AVP 101 96 97 0 98");
msg_apply_changes();
We expect it replace the 'RTP/AVP 96 97 0 101 98' for 'RTP/AVP 101 96 97 0 98'
And what kamailio does is append 'RTP/AVP 101 96 97 0 98' to the end of the SDP body.
```
#### Log Messages
<!--
We are not getting any error message
-->
```
We are not getting any error message
```
### Possible Solutions
<!--
-->
````
We've got the opportunity to test on version 4.0.3 and it does the work properly.
````
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 4.4.5 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 4.9.2
```
* **Operating System**:
```
Distributor ID: Debian
Description: Debian GNU/Linux 8.7 (jessie)
Release: 8.7
Codename: jessie
Linux devcomphe 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1100