Hi,
We are running Kamailio 3.3.5 as a Registrar service. We wanted to
increase some logging, so we inserted the following lines into our
configuration file:
...
# log failed registration
route[LOG_REG_DENIED]{
xlog("L_ERR","md=REGISTER, s=DENIED, n=$tU,
ct=$sel(contact.uri.hostport), v=$sel(via[1].host)");
}
# log successful registration
route[LOG_REG_SUCCESS]{
xlog("L_ERR","md=REGISTER, s=OK, n=$tU,
ct=$sel(contact.uri.hostport), v=$sel(via[1].host)");
}
...
After about 24 hours Kamailio stopped working properly and the following
ERROR messages started to appear in the log:
ERROR: <core> [lvalue.c:389]: rval expression evaluation failed
(141,18-141,57)
ERROR: <core> [db_row.c:116]: no private memory left
ERROR: db_mysql [km_row.c:58]: could not allocate row
ERROR: db_mysql [km_res.c:188]: error while converting row #0
ERROR: db_mysql [km_res.c:217]: error while converting rows
ERROR: db_mysql [km_dbase.c:191]: error while converting result
ERROR: <core> [db_query.c:134]: error while storing result
ERROR: p_usrloc [ul_db_query.c:108]: could not query table location.
ERROR: p_usrloc [ul_db_query.c:52]: could not query table location error
on id 12, db 1.
ERROR: p_usrloc [ul_db.c:199]: error on id 12, db 1, errors occured: 1,
threshold: 50
ERROR: <core> [db_row.c:116]: no private memory left
ERROR: db_mysql [km_row.c:58]: could not allocate row
ERROR: db_mysql [km_res.c:188]: error while converting row #0
ERROR: db_mysql [km_res.c:217]: error while converting rows
ERROR: db_mysql [km_dbase.c:191]: error while converting result
ERROR: <core> [db_query.c:134]: error while storing result
ERROR: p_usrloc [ul_db_query.c:108]: could not query table location.
ERROR: p_usrloc [ul_db_query.c:52]: could not query table location error
on id 12, db 1.
ERROR: <core> [db_row.c:116]: no private memory left
ERROR: db_mysql [km_row.c:58]: could not allocate row
ERROR: db_mysql [km_res.c:188]: error while converting row #0
ERROR: db_mysql [km_res.c:217]: error while converting rows
ERROR: db_mysql [km_dbase.c:191]: error while converting result
ERROR: <core> [db_query.c:134]: error while storing result
ERROR: p_usrloc [ul_db_query.c:108]: could not query table location.
ERROR: p_usrloc [ul_db_query.c:52]: could not query table location error
on id 12, db 2.
ERROR: p_usrloc [ul_db.c:199]: error on id 12, db 2, errors occured: 0,
threshold: 50
ERROR: <core> [db_row.c:116]: no private memory left
ERROR: db_mysql [km_row.c:58]: could not allocate row
ERROR: db_mysql [km_res.c:188]: error while converting row #0
ERROR: db_mysql [km_res.c:217]: error while converting rows
ERROR: db_mysql [km_dbase.c:191]: error while converting result
ERROR: <core> [db_query.c:134]: error while storing result
ERROR: p_usrloc [ul_db_query.c:108]: could not query table location.
ERROR: p_usrloc [ul_db_query.c:52]: could not query table location error
on id 12, db 2.
ERROR: p_usrloc [udomain.c:433]: db_query failed
ERROR: <core> [msg_translator.c:2089]: ERROR:
build_res_buf_from_sip_req: out of memory ; needs 484
ERROR: sl [sl.c:270]: failed to reply stateful (tm)
ERROR: registrar [reply.c:607]: failed to send 200 OK
ERROR: <core> [msg_translator.c:2089]: ERROR:
build_res_buf_from_sip_req: out of memory ; needs 530
ERROR: sl [sl_funcs.c:371]: ERROR: sl_reply_error used: I'm terribly
sorry, server error occurred (1/SL)
We strongly suppose that this memory issue is somehow caused by the
above mentioned xlog-lines or the usage of the select framework inside
those lines, because if we take out those lines, Kamailio is running
smoothly (Currently running for 6 days now). May it be a possible memory
leak in the select framework?
Some statistics about our Registrar (Interval 24h):
- Number of transactions: Average 500, Maximum 1000
- Number of accepted registrations: Average 7500, Maximum 14500
- Used Memory: Average 9MB, Maximum 15MB
Regards,
Paul