Hello,
use gdb to investigate the core you get. Be sure that query variable has
enough space, you don't show its declaration.
Cheers,
Daniel
On 1/8/13 2:40 AM, Krishna Kurapati wrote:
Hi,
Since there is no way to limit the result set to 1, I tried to use
raw_query inside msilo module. Everytime it executes, it is crashing.
The same query if I run in mysql shell, it is returning successfully.
Here is the code That I added:
query_len = snprintf(query, 2048, "SELECT * FROM %.*s WHERE
%.*s='%.*s' AND %.*s='%.*s' AND %.*s!=%i AND %.*s<%i LIMIT 1;",
ms_db_table.len, ms_db_table.s, sc_uri_touser.len, sc_uri_touser.s,
puri.user.len, puri.user.s, sc_uri_tohost.len, sc_uri_tohost.s,
puri.host.len, puri.host.s, sc_status.len, sc_status.s, 200,
sc_status.len, sc_status.s, MSG_NOTIFY_OFFSET);
if (query_len < 0) {
LM_ERR("error in sql snprintf");
goto error;
}
LM_DBG("m_dump_msg: Query=%s\n", query);
query_str.s = query;
query_str.len = query_len;
if (msilo_dbf.raw_query(db_con, &query_str, &db_res) < 0) {
LM_ERR("Failed to query database. Query = %s\n", query);
goto error;
}
The Debug Log at Level 4 shows following:
11(7520) DEBUG: msilo [msilo.c:1120]: m_dump_msg: Query=SELECT * FROM
silo WHERE tousername='968257197' AND todomain='50.62.1.7' AND
status!=200 AND status<1000 LIMIT 1;
11(7520) DEBUG: <core> [db_res.c:118]: allocate 48 bytes for result
set at 0x7fdd4b605540
11(7520) DEBUG: db_mysql [km_res.c:68]: 16 columns returned from the query
11(7520) DEBUG: <core> [db_res.c:155]: allocate 128 bytes for result
names at 0x7fdd4b5d8dc0
11(7520) DEBUG: <core> [db_res.c:165]: allocate 64 bytes for result
types at 0x7fdd4b5d8e60
11(7520) DEBUG: db_mysql [km_res.c:85]: allocate 16 bytes for
RES_NAMES[0] at 0x7fdd4b5d8d90
11(7520) DEBUG: db_mysql [km_res.c:92]: RES_NAMES(0x7fdd4b5d8d90)[0]=[id]
11(7520) DEBUG: db_mysql [km_res.c:100]: use DB1_INT result type
11(7520) DEBUG: db_mysql [km_res.c:85]: allocate 16 bytes for
RES_NAMES[1] at 0x7fdd4b5d8d60
11(7520) DEBUG: db_mysql [km_res.c:92]:
RES_NAMES(0x7fdd4b5d8d60)[1]=[src_addr]
11(7520) DEBUG: db_mysql [km_res.c:136]: use DB1_STRING result type
11(7520) DEBUG: db_mysql [km_res.c:85]: allocate 16 bytes for
RES_NAMES[2] at 0x7fdd4b5d8d30
11(7520) DEBUG: db_mysql [km_res.c:92]:
RES_NAMES(0x7fdd4b5d8d30)[2]=[dst_addr]
11(7520) DEBUG: db_mysql [km_res.c:136]: use DB1_STRING result type
<skip>
11(7520) DEBUG: <core> [db_val.c:117]: converting STRING
[ac3aeddd9b6f45e6822c824aa2c133b2]
11(7520) DEBUG: <core> [db_val.c:73]: converting INT [0]
11(7520) DEBUG: <core> [db_val.c:73]: converting INT [1]
26(7552) : <core> [pass_fd.c:293]: ERROR: receive_fd: EOF on 22
26(7552) DEBUG: <core> [tcp_main.c:3592]: DBG: handle_ser_child: dead
child 11, pid 7520 (shutting down?)
26(7552) DEBUG: <core> [io_wait.h:617]: DBG: io_watch_del (0x842d20,
22, -1, 0x0) fd_no=44 called
26(7552) DEBUG: <core> [tcp_main.c:3353]: DBG: handle_tcp_child: dead
tcp child 1 (pid 7520, no 11) (shutting down?)
26(7552) DEBUG: <core> [io_wait.h:617]: DBG: io_watch_del (0x842d20,
25, -1, 0x0) fd_no=43 called
0(7509) ALERT: <core> [main.c:787]: child process 7520 exited by a
signal 11
0(7509) ALERT: <core> [main.c:790]: core was not generated
0(7509) INFO: <core> [main.c:802]: INFO: terminating due to SIGCHLD
As you can see something happening to Database connection. Not sure
why I am unable to use raw_query. Normal API query from msilo works
just fine.
What am I doing wrong to make it crash?
Thanks
Krish Kura
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users