Good evening.
INTRODUCTION:
-------------
We've traced an error, in our case, db_flatstore and siptrace
combination causes crash core.
siptrace module tries to check siptrace table version on a DB which has
no query capabilities and that causes the crash core.
This happens from kamailio-4.3.0 where db_check_table_version function
call is introduced on siptrace module.
OUR CONFIGURATION:
------------------
kamailio.cfg ->
...
#!define FLAT_DBURL "flatstore:/expert/siptrace-logs"
loadmodule "db_flatstore.so"
loadmodule "siptrace.so"
modparam("siptrace", "db_url", FLAT_DBURL)
modparam("siptrace", "trace_flag", 0)
modparam("siptrace", "trace_on", 1)
modparam("siptrace", "traced_user_avp", "$avp(s:user)")
...
ERROR FLOW:
-----------
siptrace.c -> if (db_check_table_version(&db_funcs, db_con,
&siptrace_table, SIP_TRACE_TABLE_VERSION) < 0)
db.c -> db_check_table_version
-> db_table_version(dbf, dbh, table);
-> dbf->query(connection, key, 0, val, col, 1, 1, 0, &res)
From this last funtion call each thread never returns and remains
blocked, and finally crashes with a nice core (it fullfills the entire
disk)
OUR SUGGESTION:
------------------
We can recommend developers not to call db_check_table_version if a
prior query of capabilities doesn't return: DB_CAP_QUERY.
We can do it for them on db_check_table_version function.
Thanks and best regards
Eduardo Lejarreta.
--
Dpto. Sistemas SARENET
Parque Tecnológico de Zamudio. Edif. 103 48170 Vizcaya Spain.
www.sarenet.es
Personal contact:
IT Manager & VoIP Engineer.
www.seeyouonnet.com