On Thu, 11 Oct 2012 12:37:23 +0200 Pedro Antonio Vico Solano
<pvsolano(a)amper.es> wrote:
Hello everyone,
We are developing a solution based on the SQLite module for Kamailio
and we've found some bugs/errors regarding it. We use kamailio 3.2.4
and SQLite 3.7.14.1. The errors are about this:
- Memory leaks on querys via sqlops. Kamailio main process leaks 4kB
each 3 queries (aprox.) and that memory is never freed. [Attached
basic example]
- Segmentation fault when doing a SELECT COUNT(*) via sqlops.
[Attached basic example 2]
Can you help us?
Does this help for the memory leak?
diff --git a/modules_k/db_sqlite/dbase.c b/modules_k/db_sqlite/dbase.c
index 0b32e07..c1d3b71 100644
--- a/modules_k/db_sqlite/dbase.c
+++ b/modules_k/db_sqlite/dbase.c
@@ -543,7 +543,12 @@ int db_sqlite_update(const db1_con_t* _h, const db_key_t* _k, const
db_op_t* _o,
int db_sqlite_raw_query(const db1_con_t* _h, const str* _s, db1_res_t** _r)
{
- return db_do_raw_query(_h, _s, _r,
+ int rc;
+
+ rc = db_do_raw_query(_h, _s, _r,
db_sqlite_submit_query,
db_sqlite_store_result);
+ db_sqlite_cleanup_query(_h);
+
+ return rc;
}
Seems that all other database driver postpone the resource release to
free_results - but there's no reason why we couldn't do this right away
in sqlite. Since in sqlite free_results we just free cached result set.
Will take a look at the other bug later when I get the time to
reproduce it.
-Timo