Hello,
Doesn't exist a exact often that the table subscriber is changed, it can be changed at any time and almost always the core is generated. I was thinking the same thing that you, the deletion of the table is done without a lock, but the function dbt_db_get_table that call dbt_db_del_table does this lock previously...
Follows the output of 'bt full' from gdb:
Program terminated with signal 11, Segmentation fault. #0 0x008b3603 in dbt_db_del_table (_dc=0xb60fde60, _s=0xbfc94380, sync=0) at dbt_lib.c:238 238 dbt_lib.c: Arquivo ou diretório não encontrado. in dbt_lib.c (gdb) bt full #0 0x008b3603 in dbt_db_del_table (_dc=0xb60fde60, _s=0xbfc94380, sync=0) at dbt_lib.c:238 _tbc = (dbt_table_p) 0xb6175d20 hash = 6 #1 0x008b3f38 in dbt_db_get_table (_dc=0xb60fde60, _s=0xbfc94380) at dbt_lib.c:300 _tbc = (dbt_table_p) 0xb6175d20 hash = 6 #2 0x008ae12b in dbt_query (_h=0x82e3c90, _k=0xbfc94378, _op=0x0, _v=0xbfc94348, _c=0x82e3e50, _n=1, _nc=2, _o=0x0, _r=0xbfc94390) at dbt_base.c:200 _tbc = <value optimized out> _drp = <value optimized out> _dres = <value optimized out> lkey = <value optimized out> lres = (int *) 0x0 _o_k = (db_key_t *) 0x0 _o_op = 0x0 _o_n = <value optimized out> _o_l = <value optimized out> _o_nc = <value optimized out> #3 0x001ae088 in digest_authenticate (msg=0x82df8f8, realm=<value optimized out>, tname=<value optimized out>, hftype=HDR_AUTHORIZATION_T) at authorize.c:98 cred = <value optimized out> keys = {0x1b14c8, 0x1b14d0} vals = {{type = DB1_STR, nul = 0, free = 165777064, val = {int_val = 136948130, ll_val = 17316817314, double_val = 8.5556445301562903e-314, time_val = 136948130, string_val = 0x829a9a2 "3022", realm="192.168.166.199", nonce="TnuaJ057mPskvCOYDgyAURuuottiYy7cIAQKLUA=", cnonce="4VwQFl/7Ei+IWecbrZ9rug", algorithm=MD5, uri="sip:192.168.166.199", response="45b23bc0e48592fb57b1ebc87f0e3dbc""..., str_val = { s = 0x829a9a2 "3022", realm="192.168.166.199", nonce="TnuaJ057mPskvCOYDgyAURuuottiYy7cIAQKLUA=", cnonce="4VwQFl/7Ei+IWecbrZ9rug", algorithm=MD5, uri="sip:192.168.166.199", response="45b23bc0e48592fb57b1ebc87f0e3dbc""..., len = 4}, blob_val = { s = 0x829a9a2 "3022", realm="192.168.166.199", nonce="TnuaJ057mPskvCOYDgyAURuuottiYy7cIAQKLUA=", cnonce="4VwQFl/7Ei+IWecbrZ9rug", algorithm=MD5, uri="sip:192.168.166.199", response="45b23bc0e48592fb57b1ebc87f0e3dbc""..., len = 4}, bitmap_val = 136948130}}, {type = DB1_STR, nul = 0, free = 8200, val = {int_val = 137215560, ll_val = 64561725000, double_val = 3.1897730358749953e-313, time_val = 137215560, string_val = 0x82dbe48 "192.168.166.199", str_val = {s = 0x82dbe48 "192.168.166.199", len = 15}, blob_val = {s = 0x82dbe48 "192.168.166.199", len = 15}, bitmap_val = 137215560}}} result = {s = 0x0, len = 0} n = <value optimized out> ha1 = "\000\000\000\000\220GÉ¿\000\000\000\000ï=\000\000ÒBÉ¿L\215á\t\000\000\000\000(Óà\tÔBÉ¿F\000\000\000yv¯\000L\215á\t", '\0' <repeats 12 times>, "ÿÿÿÿ\a\000\000\000a{¯\000^{¯\000\000\000\000\000\000\000\000\000ÿÿÿÿ+\000\000\000\000\000\000\000\001\000\000\0008DÉ¿\210\033-\bÈVÉ¿HDÉ¿&\205\017\bÈVÉ¿øø-\b8DÉ¿P\020-\b", '\0' <repeats 32 times>, " e¯\000TDÉ¿`ñ\000\000ÐÑ\000\000\\222¯d\030\000\000\000\000\000\000\000»¬£\000;\216á\t 1±\000\000 \000\000ÔCÉ¿8\216á\t\bÔ\r¶"... h = (struct hdr_field *) 0x82e0398 domain = {s = 0x82dbe48 "192.168.166.199", len = 15} table = {s = 0x82d8f60 "subscriber", len = 10} result = (db1_res_t *) 0x0 ret = 0
Best Regards
2011/9/23 Daniel-Constantin Mierla miconda@gmail.com
Hello,
can you send the output of 'bt full' from gdb?
How often the subscriber table is changed? I see in this case the deletion of the table is done without a lock.
Cheers, Daniel
On 9/22/11 9:44 PM, Bruno Bresciani wrote:
Hi All,
Kamailio 3.1.2 generate a core in db_text module when subscriber table is updated and after this action some SIP message require authentication process...
Someone Can Help me to understand why this core is happening? Below is part of kamailio's trace and gdb core too.
Kamailio's trace:
*Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2327]: DEBUG: auth_db [authorize.c:239]: realm value [192.168.166.199]* Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2327]: DEBUG: auth [api.c:95]: auth: digest-algo: MD5 parsed value: 1 *Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2327]: DEBUG: db_text [dbt_file.c:78]: [subscriber] was updated* Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2324]: ALERT: <core> [main.c:741]: child process 2327 exited by a signal 11 Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2324]: ALERT: <core> [main.c:744]: core was generated Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2324]: INFO: <core> [main.c:756]: INFO: terminating due to SIGCHLD Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2335]: INFO: <core> [main.c:807]: INFO: signal 15 received c Sep 22 16:35:54 sswpst00 /home2/local/kamailio/sbin/kamailio[2335]: DEBUG: <core> [main.c:818]: Memory status (pkg):
gdb core trace:
Core was generated by `/home2/local/kamailio/sbin/kamailio -P /var/run/kamailio.pid'. Program terminated with signal 11, Segmentation fault. *#0 0x00f21603 in dbt_db_del_table (_dc=0xb6071e60, _s=0xbf837040, sync=0) at dbt_lib.c:238* 238 dbt_lib.c: Arquivo ou diretório não encontrado. in dbt_lib.c
Best Regards
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- http://www.asipto.com Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kathttp://linkedin.com/in/miconda -- http://twitter.com/miconda