Hi,
Unfortunately, this issue is still persisting, Kamailio crashed again twice with the same symptoms.

/usr/local/sbin/kamailio -V

version: kamailio 5.4.1 (x86_64/linux) f57c90

(gdb) frame 0

#0  0x00007fe8703c342d in update_dialog_vars_dbinfo (cell=0x7fe8765627b8, var=0x7574617473706973) at dlg_db_handler.c:755
755             SET_STR_VALUE(values+2, var->key);

(gdb) p *cell

$1 = {ref = 2, next = 0x0, prev = 0x0, h_id = 1983, h_entry = 1998, state = 5, lifetime = 10800, init_ts = 1602587600, start_ts = 0, end_ts = 1602587602, dflags = 1664, iflags = 0, sflags = 0, toroute = 0, toroute_name = {s = 0x0, len = 0}, from_rr_nb = 0, tl = {next = 0x0,
    prev = 0x0, timeout = 0}, callid = {s = 0x7fe876562928 "7cc579d77316465e60a43abd3ab361bd@local.net", len = 55}, from_uri = {s = 0x7fe123462960 "sip:123456789@local.net", len = 37}, to_uri = {s = 0x7fe871234986 "sip:101@192.168.10.10:5060",
    len = 31}, req_uri = {s = 0x7fe8765629a6 "sip:101@172.16.10.18:25767", len = 35}, tag = {{s = 0x7fe8799cc1e8 "as0efa97cc416e6-2517-31", len = 10}, {s = 0x0, len = 0}}, cseq = {{s = 0x7fe876109700 "102", len = 3}, {s = 0x0, len = 0}}, route_set = {{
      s = 0x7fe123ae7280 "log", len = 0}, {s = 0x0, len = 0}}, contact = {{s = 0x7fe87a512a20 "sip:123456789@192.168.10.136:5060", len = 31}, {s = 0x0, len = 0}}, bind_addr = {0x7fe123fbc2f8, 0x0}, cbs = {first = 0x0, types = 0}, profile_links = 0x0, vars = 0x7fe874d11fe8,
  ka_src_counter = 0, ka_dst_counter = 0}

(gdb) list

750                     return -1;
751
752             VAL_TYPE(values) = VAL_TYPE(values+1) = DB1_INT;
753             VAL_TYPE(values+2) = VAL_TYPE(values+3) = DB1_STR;
754             VAL_NULL(values) = VAL_NULL(values+1) = VAL_NULL(values+2) = VAL_NULL(values+3) = 0;
755             SET_STR_VALUE(values+2, var->key);
756
757             VAL_INT(values)                 = cell->h_entry;
758             VAL_INT(values+1)               = cell->h_id;
759

(gdb) info locals

values = {{type = DB1_INT, nul = 0, free = 9438, val = {int_val = 1998, ll_val = 1998, double_val = 9.871431603908106e-321, time_val = 1998, string_val = 0x7ce <Address 0x7ce out of bounds>, str_val = {s = 0x7ce <Address 0x7ce out of bounds>, len = 1404431440}, blob_val = {
        s = 0x7ce <Address 0x7ce out of bounds>, len = 1404431440}, bitmap_val = 1998, uint_val = 1998, ull_val = 1998}}, {type = DB1_INT, nul = 0, free = 0, val = {int_val = 1983, ll_val = 140733193390015, double_val = 6.953143608353881e-310, time_val = 140733193390015,
      string_val = 0x7fff000007bf <Address 0x7fff000007bf out of bounds>, str_val = {s = 0x7fff000007bf <Address 0x7fff000007bf out of bounds>, len = 1404421428}, blob_val = {s = 0x7fff000007bf <Address 0x7fff000007bf out of bounds>, len = 1404421428}, bitmap_val = 1983,
      uint_val = 1983, ull_val = 140733193390015}}, {type = DB1_STR, nul = 0, free = -1756933536, val = {int_val = 1956554888, ll_val = 140636365695112, double_val = 6.948359684592124e-310, time_val = 140636365695112, string_val = 0x7fe8749ea888 "cfg_version", str_val = {
        s = 0x7fe8749ea888 "cfg_version", len = 11}, blob_val = {s = 0x7fe8749ea888 "cfg_version", len = 11}, bitmap_val = 1956554888, uint_val = 1956554888, ull_val = 140636365695112}}, {type = DB1_STR, nul = 0, free = 1936573280, val = {int_val = 1938923952,
      ll_val = 140636348064176, double_val = 6.9483588135081459e-310, time_val = 140636348064176, string_val = 0x7fe87391a1b0 "1", str_val = {s = 0x7fe87391a1b0 "1", len = 8}, blob_val = {s = 0x7fe87391a1b0 "1", len = 8}, bitmap_val = 1938923952, uint_val = 1938923952,
      ull_val = 140636348064176}}}
insert_keys = {0x7fe87065aa10 <vars_h_entry_column>, 0x7fe87065aa00 <vars_h_id_column>, 0x7fe87065aa20 <vars_key_column>, 0x7fe87065aa30 <vars_value_column>}
__FUNCTION__ = "update_dialog_vars_dbinfo"

My C knowledge is far to understand where the issue is, but what I noticed, that in the working commit: (a6cb74)
the unlock dialog function looks like that:

        /* unlock dialog */
        if (dlg) {
                dlg->dflags |= DLG_FLAG_CHANGED_VARS;
                dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
                if ( dlg_db_mode==DB_MODE_REALTIME )
                        update_dialog_dbinfo(dlg);

        }

while in the current stable branch (a505f5)

if (dlg) {
                dlg->dflags |= DLG_FLAG_CHANGED_VARS;
                if ( dlg_db_mode==DB_MODE_REALTIME ) {
                        /* dlg_lock() / dlg_unlock() are reentrant */
                        update_dialog_dbinfo(dlg);
                }
                dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
        }

Looks that the commit e4cf67 wasn't backported to the stable branch.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.