<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10px"><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">OS Version:&nbsp;CentOS Linux release 7.0.1406 (Core)</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">Linux 3.10.0-123.20.1.el7.x86_64 x86_64<br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">redis_version:2.8.14</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">Opensips Version: NOTICE:core:main: version: opensips 1.11.3-notls (x86_64/linux) (cloned from GitHub 2015-02-02)</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr"><br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">Description of Problem: Attempting to implement cachedb_redis key/value store. When Redis queries return NULL (no matching key in Redis) script runs fine, when a value is returned from Redis it causes a segmentation fault (output below). Able to reproduce using "cache_fetch" as well as "cache_raw_query." I am passing Redis an IP address as a key and originally thought the "." was causing the segfault, however, I used a substitution to replace "." with "_" and the segfault still occurs. Further testing showed that removing matching keys from Redis allowed the script to carry on which leads me to believe it is the return from Redis causing the seg fault and not the format of the key.</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr"><br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr">Relevant config lines:</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">loadmodule "cachedb_redis.so"</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">modparam("cachedb_redis", "cachedb_url","redis:group1://localhost:6379/")</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">#...</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">$avp(s_ip) = $si;<br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">avp_subst("$avp(s_ip)/$avp(s_ip_format)","/\./_/g");</div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style=""><span class="" style="white-space:pre">        </span>cache_fetch("redis:group1","$avp(s_ip_format)",$avp(host_type));</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1422996705691_3469">#also tried:</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1422996705691_3476">#cache_raw_query("redis:group1","HGET known_hosts $avp(s_ip_format)","$avp(host_type)");</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1422996705691_3475"><br></div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1422996705691_3519">Relevant log output:</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1422996705691_3522">







<div class="" style="" id="yui_3_16_0_1_1422996705691_3521"><span class="" style="" id="yui_3_16_0_1_1422996705691_3520">Feb&nbsp; 3 13:09:22 localhost /usr/local/sbin/opensips[12528]: NOTICE:cachedb_redis:destroy: destroy module cachedb_redis ...</span></div>
<div class="" style="" id="yui_3_16_0_1_1422996705691_3524"><span class="" style="" id="yui_3_16_0_1_1422996705691_3523">Feb&nbsp; 3 13:09:23 localhost /usr/local/sbin/opensips[12489]: ERROR:core:cachedb_fetch: Wrong argument &lt;local&gt; - no cachedb system with this name registered</span></div>
<div class="" style="" id="yui_3_16_0_1_1422996705691_3526"><span class="" style="" id="yui_3_16_0_1_1422996705691_3525">Feb&nbsp; 3 13:09:23 localhost kernel: opensips[12489]: segfault at 0 ip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (null) sp 00007fff5bc53678 error 14 in opensips[400000+1f1000]</span></div>
<div class="" style="" id="yui_3_16_0_1_1422996705691_3528"><span class="" style="" id="yui_3_16_0_1_1422996705691_3527">Feb&nbsp; 3 13:09:23 localhost /usr/local/sbin/opensips[12486]: INFO:core:handle_sigs: child process 12489 exited by a signal 11</span></div>
<div class="" style="" id="yui_3_16_0_1_1422996705691_3530"><span class="" style="" id="yui_3_16_0_1_1422996705691_3529">Feb&nbsp; 3 13:09:23 localhost /usr/local/sbin/opensips[12486]: INFO:core:handle_sigs: core was generated</span></div>
<div class="" style="" id="yui_3_16_0_1_1422996705691_3532"><span class="" style="" id="yui_3_16_0_1_1422996705691_3531">Feb&nbsp; 3 13:09:23 localhost /usr/local/sbin/opensips[12486]: INFO:core:handle_sigs: terminating due to SIGCHLD</span></div></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style=""><br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">Here is the monitor output from Redis (replaced the actually IP addresses being dipped). This shows that, prior to the segmentation fault Opensips properly queried Redis and received a NULL response (since 192.168.1.1 is not a valid key while 192.168.1.2 is) and the second query create the segfault:</div><div class="" style="" id="yui_3_16_0_1_1422996705691_3684"><span class="" style="" id="yui_3_16_0_1_1422996705691_3683">1422997762.024040 [0 127.0.0.1:54187] "GET" "192_168_1_1"</span></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">








</div><div class="" style="" id="yui_3_16_0_1_1422996705691_3686"><span class="" style="" id="yui_3_16_0_1_1422996705691_3685">1422997762.047668 [0 127.0.0.1:54189] "GET" "192_168_1_2"</span></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style=""><br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">Core Info (I may be doing this incorrectly):</div><div class="" style="" id="yui_3_16_0_1_1422996705691_3630"><span class="" style="" id="yui_3_16_0_1_1422996705691_3694">(gdb) bt full</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3631"><span class="" style="" id="yui_3_16_0_1_1422996705691_3731">#0&nbsp; 0x0000000000000000 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3632"><span class="" style="">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3633"><span class="" style="" id="yui_3_16_0_1_1422996705691_3690">#1&nbsp; 0x00007fc7423d4484 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3634"><span class="" style="" id="yui_3_16_0_1_1422996705691_3732">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3635"><span class="" style="" id="yui_3_16_0_1_1422996705691_3693">#2&nbsp; 0x00007fc743d57de8 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3636"><span class="" style="" id="yui_3_16_0_1_1422996705691_3733">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3637"><span class="" style="" id="yui_3_16_0_1_1422996705691_3691">#3&nbsp; 0x00000000004ecc44 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3638"><span class="" style="" id="yui_3_16_0_1_1422996705691_3692">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3687"><span class="" style="">#4&nbsp; 0x0000000000000010 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3688"><span class="" style="" id="yui_3_16_0_1_1422996705691_3734">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3689"><span class="" style="" id="yui_3_16_0_1_1422996705691_3735">#5&nbsp; 0xffff8000a43ac8f1 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3737"><span class="" style="" id="yui_3_16_0_1_1422996705691_3736">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#6&nbsp; 0x00007fc743d57de8 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3739"><span class="" style="" id="yui_3_16_0_1_1422996705691_3738">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3741"><span class="" style="" id="yui_3_16_0_1_1422996705691_3740">#7&nbsp; 0x00007fc743d4d1ef in ?? ()</span></div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3743"><span class="" style="" id="yui_3_16_0_1_1422996705691_3742">#8&nbsp; 0x00007fff5bc53760 in ?? ()</span></div><div class="" style="" id="yui_3_16_0_1_1422996705691_3745"><span class="" style="" id="yui_3_16_0_1_1422996705691_3744">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#9&nbsp; 0xcccccccccccccccd in ?? ()</span></div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#10 0x00007fc743d2e7f0 in ?? ()</span></div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#11 0x00000000004f21db in ?? ()</span></div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#12 0x00007fc743d4e1b8 in ?? ()</span></div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style=""><span class="" style="">#13 0x0000000000000000 in ?? ()</span></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">



































</div><div class="" style=""><span class="" style="">No symbol table info available.</span></div><div class="" style=""><span class="" style=""><br></span></div><div class="" style="" dir="ltr"><span class="" style="">Thanks!</span></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style=""><br></div><div id="yui_3_16_0_1_1422996705691_3316" dir="ltr" class="" style="">&nbsp;</div></div></body></html>