Module: kamailio
Branch: 5.1
Commit: b43fbb18acb86b97ff86bd867ab46c25747b2cf0
URL: https://github.com/kamailio/kamailio/commit/b43fbb18acb86b97ff86bd867ab46c2…
Author: Sebastian Kemper <sebastian_ml(a)gmx.net>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2018-10-19T08:25:56+02:00
kamctl: make jsonrpc filter portable
The filter has a regex looking for a literal '{' in the beginning of a
line. Some awk implementations interpret this as a meta character, so
the regex is deemed broken. Example with busybox awk (POSIX):
root@hank2:~# kamctl ps
awk: bad regex '^{.+"id"[ ]*:[ ]*[0-9]+[ ]*}$': Invalid contents of {}
root@hank2:~#
To fix this enclose the character in square brackets. This always
matches for a literal '{' and is portable.
Signed-off-by: Sebastian Kemper <sebastian_ml(a)gmx.net>
(cherry picked from commit 59d287586f502a8df71c2e91899fde49594e072e)
---
Modified: utils/kamctl/kamctl.base
---
Diff: https://github.com/kamailio/kamailio/commit/b43fbb18acb86b97ff86bd867ab46c2…
Patch: https://github.com/kamailio/kamailio/commit/b43fbb18acb86b97ff86bd867ab46c2…
---
diff --git a/utils/kamctl/kamctl.base b/utils/kamctl/kamctl.base
index 641449422c..2873c2ddb8 100644
--- a/utils/kamctl/kamctl.base
+++ b/utils/kamctl/kamctl.base
@@ -699,7 +699,7 @@ filter_json()
$AWK 'function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
BEGIN { line=0; IGNORECASE=1; }
{ line++; }
- NR == 1 && /^{.+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; }
+ NR == 1 && /^[{].+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; }
NR == 1 && /^200 OK/ { next; }
/^[ \t]*"jsonrpc":[ \t]*"2.0"/ { print; next; }
/^[ \t]*"result":[ \t]*\[.+/ {
Module: kamailio
Branch: master
Commit: f057e844ba407333ad8d876daa1f6ee49bd41c86
URL: https://github.com/kamailio/kamailio/commit/f057e844ba407333ad8d876daa1f6ee…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2018-10-18T10:13:08+02:00
core: info log at startup with number of precesses, pkg and shm sizes
- useful to see if needed to troubleshoot by analyzing log messages
---
Modified: src/main.c
---
Diff: https://github.com/kamailio/kamailio/commit/f057e844ba407333ad8d876daa1f6ee…
Patch: https://github.com/kamailio/kamailio/commit/f057e844ba407333ad8d876daa1f6ee…
---
diff --git a/src/main.c b/src/main.c
index 2062f4a745..b7e9fdb58a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2615,8 +2615,8 @@ int main(int argc, char** argv)
* function being called before this point may rely on the
* number of processes !
*/
- LM_DBG("Expect (at least) %d kamailio processes in your process list\n",
- get_max_procs());
+ LM_INFO("processes (at least): %d - shm size: %lu - pkg size: %lu\n",
+ get_max_procs(), shm_mem_size, pkg_mem_size);
#if defined USE_DNS_CACHE && defined USE_DNS_CACHE_STATS
if (init_dns_cache_stats(get_max_procs())<0){
### Description
Periodically Kamailio crashes, log shows that it happens on REGISTER request with incorrect params. I don't know if it is a network problem or somebody sends incorrect request, but there are records in logs:
#### Log Messages
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: ERROR: <core> [core/parser/parse_from.c:53]: parse_from_header(): bad msg or missing FROM header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: ERROR: dialog [dlg_cseq.c:93]: dlg_cseq_prepare_msg(): cannot parse FROM header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: ERROR: pv [pv_core.c:664]: pv_get_callid(): cannot parse Call-Id header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: {1 <null> <null>} ERROR: <core> [core/parser/parse_from.c:53]: parse_from_header(): bad msg or missing FROM header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: {1 <null> <null>} ERROR: pv [pv_core.c:468]: pv_get_from_attr(): cannot parse From header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: {1 <null> <null>} ERROR: pv [pv_core.c:664]: pv_get_callid(): cannot parse Call-Id header
Jan 30 03:49:29 kam /usr/sbin/kamailio[20718]: {1 <null> <null>} NOTICE: <script>: REQ: M='REGISTER sip:1.2.3.208:5060' F='<null>' T='<null>' CI='<null>' SRC='113.128.105.127:49556' AU='<null>'
Jan 30 03:49:29 kam /usr/sbin/kamailio[20736]: CRITICAL: <core> [core/pass_fd.c:277]: receive_fd(): EOF on 15
Jan 30 03:49:29 kam /usr/sbin/kamailio[20713]: ALERT: <core> [main.c:746]: handle_sigs(): child process 20718 exited by a signal 11
Jan 30 03:49:29 kam /usr/sbin/kamailio[20713]: ALERT: <core> [main.c:749]: handle_sigs(): core was not generated
Jan 30 03:49:29 kam /usr/sbin/kamailio[20713]: INFO: <core> [main.c:771]: handle_sigs(): terminating due to SIGCHLD
### Additional Information
version: kamailio 5.2.0-dev2 (i386/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**:
Linux kam 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) 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/1420
### Description
<!--
Explain what you did, what you expected to happen, and what actually happened.
-->
S-CSCF stops processing REGISTER and INVITE requests.
### Troubleshooting
Gdb stack traces revealed several processes trying to do lock_udmain() unsuccessfully.
Adding more debug pointed to the direction of ims_registrar_scscf [lookup.c:107]: lookup().
This function does lock_udomain() with one "slot" and releases it with another.
The lookup() [locks](https://github.com/kamailio/kamailio/blob/48de203fda213749ac1e6fdb08… domain with one value in the **aor** but before unlocking it at lockup.c:209 the said
aor is [changed](https://github.com/kamailio/kamailio/blob/48de203fda213749ac1e6fdb…. Aor points to the URI that is rewritten and therefore the wrong slot is [unlocked](https://github.com/kamailio/kamailio/blob/48de203fda213749ac1e6fd…. In the log below the locked slot is 461 while unlocked is 427.
9(791) DEBUG: ims_registrar_scscf [lookup.c:90]: lookup(): looking for any type of terminal
9(791) DEBUG: ims_registrar_scscf [lookup.c:103]: lookup(): Looking for tel:+46xxxxxxxxxx
9(791) DEBUG: ims_usrloc_scscf [udomain.c:445]: lock_ulslot(): LOCKING UDOMAIN SLOT [**461**]
9(791) DEBUG: ims_registrar_scscf [lookup.c:119]: lookup(): Found a valid contact [sip:10.110.2.199:5060;alias=10.110.2.19950602]
9(791) DEBUG: [core/parser/parse_rr.c:464]: get_path_dst_uri(): path for branch: 'sip:term@pcscf.yyy.xxx.3gppnetwork.org;lr'
9(791) DEBUG: ims_usrloc_scscf [udomain.c:465]: unlock_ulslot(): UN-LOCKING UDOMAIN SLOT [**427**]
#### Reproduction
<!--
If the issue can be reproduced, describe how it can be done.
-->
#### Debugging Data
<!--
If you got a core dump, use gdb to extract troubleshooting data - full backtrace,
local variables and the list of the code at the issue location.
gdb /path/to/kamailio /path/to/corefile
bt full
info locals
list
If you are familiar with gdb, feel free to attach more of what you consider to
be relevant.
-->
```
(gdb) bt #0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007fecd3f61dbd in futex_get (lock=0x7feccf6a2214) at ../../core/mem/../futexlock.h:108 #2 0x00007fecd3f6832e in lock_ulslot (_d=0x7feccf70a718, i=461) at udomain.c:450
#3 0x00007fecd3f68273 in lock_udomain (_d=0x7feccf70a718, _aor=0x7feccf72e5a8) at udomain.c:424 #4 0x00007fecd3ccd375 in update_contacts (msg=0x7fecd3f1b6c0 <_pv_treq>, _d=0x7feccf70a718, public_identity=0x7feccf73e0c8, assignment_type=2, s=0x7fff31beac58, ccf1=0x7fff31beac80, ccf2=0x7fff31beac90, ecf1=0x7fff31beaca0, ecf2=0x7fff31beacb0, contact_header=0x7feccf73e0e0) at save.c:886 #5 0x00007fecd3c6cbe5 in async_cdp_callback (is_timeout=0, param=0x7feccf73e0a0, saa=0x7feccf7b9430, elapsed_msecs=59) at cxdx_sar.c:252
#6 0x00007fecd460fb18 in api_callback (p=0x7feccf69cd18, msg=0x7feccf7b9430, ptr=0x0) at api_process.c:120 #7 0x00007fecd46868aa in worker_process (id=0) at worker.c:346
#8 0x00007fecd464636b in diameter_peer_start (blocking=0) at diameter_peer.c:242
#9 0x00007fecd4622666 in cdp_child_init (rank=0) at cdp_mod.c:243 #10 0x00000000005d2fbc in init_mod_child (m=0x7fecd940f8a0, rank=0) at core/sr_module.c:943 #11 0x00000000005d2c5e in init_mod_child (m=0x7fecd9410550, rank=0) at core/sr_module.c:939 #12 0x00000000005d2c5e in init_mod_child (m=0x7fecd9410958, rank=0) at core/sr_module.c:939 #13 0x00000000005d2c5e in init_mod_child (m=0x7fecd9410d68, rank=0) at core/sr_module.c:939 #14 0x00000000005d2c5e in init_mod_child (m=0x7fecd9411560, rank=0) at core/sr_module.c:939 #15 0x00000000005d2c5e in init_mod_child (m=0x7fecd9411aa0, rank=0) at core/sr_module.c:939 #16 0x00000000005d2c5e in init_mod_child (m=0x7fecd9411f00, rank=0) at core/sr_module.c:939 #17 0x00000000005d3390 in init_child (rank=0) at core/sr_module.c:970 #18 0x000000000042539c in main_loop () at main.c:1701 #19 0x000000000042bdd5 in main (argc=6, argv=0x7fff31beb998) at main.c:2638
```
#### Log Messages
<!--
Check the syslog file and if there are relevant log messages printed by Kamailio, add them next, or attach to issue, or provide a link to download them (e.g., to a pastebin site).
-->
```
9(791) DEBUG: ims_registrar_scscf [lookup.c:90]: lookup(): looking for any type of terminal
9(791) DEBUG: ims_registrar_scscf [lookup.c:103]: lookup(): Looking for tel:+46xxxxxxxxxx
9(791) DEBUG: ims_usrloc_scscf [udomain.c:445]: lock_ulslot(): LOCKING UDOMAIN SLOT [461]
9(791) DEBUG: ims_registrar_scscf [lookup.c:119]: lookup(): Found a valid contact [sip:10.110.2.199:5060;alias=10.110.2.19950602]
9(791) DEBUG: [core/parser/parse_rr.c:464]: get_path_dst_uri(): path for branch: 'sip:term@pcscf.yyy.xxx.3gppnetwork.org;lr'
9(791) DEBUG: ims_usrloc_scscf [udomain.c:465]: unlock_ulslot(): UN-LOCKING UDOMAIN SLOT [427]
```
#### SIP Traffic
<!--
If the issue is exposed by processing specific SIP messages, grab them with ngrep or save in a pcap file, then add them next, or attach to issue, or provide a link to download them (e.g., to a pastebin site).
-->
```
(paste your sip traffic here)
```
### Possible Solutions
<!--
If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix.
-->
Make a copy of the aor string.
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.1.5 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, 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_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.8.2
```
* **Operating System**:
<!--
Details about the operating system, the type: Linux (e.g.,: Debian 8.4, Ubuntu 16.04, CentOS 7.1, ...), MacOS, xBSD, Solaris, ...;
Kernel details (output of `uname -a`)
-->
```
Linux scscf 4.14.67-coreos #1 SMP Mon Sep 10 23:14:26 UTC 2018 x86_64 x86_64 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/1647