BTW, for what it's worth: these effects have not been observed when using db_postgres instead.

Alex Balashov wrote:

Greetings,

I've run into a bug in Kamailio 1.4.4 where, if using the permissions module with db_mysql the database becomes unavailable, Kamailio will crash (SIGSEGV) somewhat arbitrarily after about 30-45 seconds. The process is a little random; sometimes it can take longer.

At first, I suspected the problem may be with 1.4.x, but got the exact same effect when trying 1.5.2. I also assumed the problem may be with db_mysql or even libmysqlclient, but when I remove the permissions functionality from the configuration the process does not crash. This is a configuration from the 1.4.x era with a lot of custom DB queries via avp_db_query() (pre-sqlops); when the database disappears, Kamailio will complain loudly in the logs, of course, but it will not crash unless I am calling allow_trusted() as part of the configuration and am using the permissions module with database backing.

The test system is CentOS 4.7 64-bit, but I've reproduced the problem on Debian lenny and unstable just as easily with libmysqlclient15.

Here are my steps for producing the bug:

1) Initialise Kamailio (the only modules that use database are permissions and avpops);

2) Firewall MySQL database off or shut it down;

3) Place a call - even one will do;

4) Kamailio will not crash immediately; it usually takes several request retransmissions or successive attempts to contact the database for this to happen, and it can take close to a minute. Eventually, though, there is a segfault that appears to be bubbling up from allow_trusted() in the call stack.

Here is the backtrace. IP addresses and phone numbers are sanitised to protect confidentiality, but have been substituted consistently:

(gdb) where
0 0x00000030eba21b70 in mysql_real_escape_string ()
   from /usr/lib64/mysql/libmysqlclient.so.15
1 0x0000002a95be64c1 in db_mysql_val2str (_c=0x686e60, _v=0x7fbfffd900,
    _s=0x6331a7 "222.22.222.22'", _len=0x7fbfffd2cc) at val.c:233
0000002 0x00000000004b2f14 in db_print_where (_c=0x686e60,
_b=0x63319f "src_ip='222.22.222.22'", _l=65473, _k=0x7fbfffd440, _o=0x0,
    _v=0x7fbfffd900, _n=1, val2str=0x2a95be62ca <db_mysql_val2str>)
    at db/db_ut.c:275
0000003 0x00000000004affb8 in db_do_query (_h=0x686e60, _k=0x7fbfffd440, _op=0x0,
    _v=0x7fbfffd900, _c=Variable "_c" is not available.
) at db/db_query.c:78
0000004 0x0000002a95be2dbf in db_mysql_query (_h=0x0, _k=0x6331a7,
    _op=0x2a962492a0, _v=0xe, _c=0x7fbfffd900, _n=6844000, _nc=0, _o=0x0,
    _r=0x0) at dbase.c:249
0000005 0x0000002a961428c0 in allow_trusted (msg=0x687038,
    src_ip=0x2a962492a0 "222.22.223.23", proto=1) at trusted.c:422
0000006 0x0000002a96143356 in allow_trusted_0 (_msg=0x687038, str1=Variable "str1" is not available.
)
    at ../../parser/../ip_addr.h:398
0000007 0x000000000040d4df in do_action (a=0x6566f8, msg=0x687038) at action.c:850 0000008 0x000000000040ec2b in run_action_list (a=Variable "a" is not available.
) at action.c:138
0000009 0x00000000004523dc in eval_expr (e=0x6567c8, msg=0x687038, val=0x0)
    at route.c:1116
0000010 0x00000000004527c2 in eval_expr (e=0x656810, msg=0x687038, val=0x0)
    at route.c:1429
11 0x0000000000452159 in eval_expr (e=0x656858, msg=0x687038, val=0x0)
    at route.c:1434
12 0x000000000040c933 in do_action (a=0x656e70, msg=0x687038) at action.c:705
13 0x000000000040ec2b in run_action_list (a=Variable "a" is not available.
) at action.c:138
14 0x000000000040e95f in do_action (a=0x657f00, msg=0x687038) at action.c:728
15 0x000000000040ec2b in run_action_list (a=Variable "a" is not available.
) at action.c:138
16 0x000000000040e95f in do_action (a=0x657fd0, msg=0x687038) at action.c:728
17 0x000000000040ec2b in run_action_list (a=Variable "a" is not available.
) at action.c:138
18 0x000000000040ef30 in run_top_route (a=0x651008, msg=0x687038)
    at action.c:118
---Type <return> to continue, or q <return> to quit---
19 0x00000000004467ef in receive_msg (
buf=0x622ac0 "INVITE sip:[email protected]:5060;transport=udp SIP/2.0\r\nRecord-Route: <sip:222.22.223.23;lr;rpdicor=VPSF506071629460;vsf=AAAAAB0GDgULBQIABgJ3AW4CFhgKGwIbARoJNDg->\r\nRecord-Route: <sip:90.148.216.254"..., len=922,
    rcv_info=0x7fbffff700) at receive.c:165 0000020 0x0000000000480c44
in udp_rcv_loop () at udp_server.c:449 21 0x0000000000422b4f in main
(argc=Variable "argc" is not available. ) at main.c:692



--
Alex Balashov - Principal
Evariste Systems
Web     : http://www.evaristesys.com/
Tel     : (+1) (678) 954-0670
Direct  : (+1) (678) 954-0671

_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to