[OpenSIPS-Devel] trying to examine presence/timer crash

Bogdan-Andrei Iancu bogdan at voice-system.ro
Mon Sep 27 19:17:07 CEST 2010


Hi Juha,

in frame 1, try to print:

p (struct prep_stmt*)(*(conn)->curr_ps)

p ((struct prep_stmt*)(*(conn)->curr_ps))->ctx

if ctx field is not null :

    p ((struct prep_stmt*)(*(conn)->curr_ps))->ctx->table

    p ((struct prep_stmt*)(*(conn)->curr_ps))->ctx->query


p ((struct prep_stmt*)(*(conn)->curr_ps))->stmts

if stmts field is not null :

    p ((struct prep_stmt*)(*(conn)->curr_ps))->stmts->table

    p ((struct prep_stmt*)(*(conn)->curr_ps))->-stmts>query


Regards,
Bogdan

Juha Heinanen wrote:
> i tried to figure out why i'm getting the presence/timer crashes, but
> don't know how to access the argument value of a function.
>
> (gdb) where
> #0  0xb758e3e3 in db_mysql_val2bind (v=0xbfcbdf3c, binds=0x8188190, i=1)
>     at val.c:274
> #1  0xb758993e in db_mysql_do_prepared_query (conn=<value optimized out>, 
>     v=<value optimized out>, n=2, uv=0x0, un=0, query=<value optimized out>)
>     at dbase.c:443
> #2  0xb758b0dd in db_mysql_delete (_h=0x817c1a0, _k=0xbfcbdf70, 
>     _o=0xbfcbdf64, _v=0xbfcbdf28, _n=2) at dbase.c:893
> #3  0xb723dea4 in msg_watchers_clean (ticks=3600, param=0x0)
>     at subscribe.c:484
> #4  0x080b64cf in timer_ticker () at timer.c:325
> #5  run_timer_process () at timer.c:395
> #6  start_timer_processes () at timer.c:475
> #7  0x08069ea3 in main_loop (argc=16, argv=0xbfcbe134) at main.c:867
> #8  main (argc=16, argv=0xbfcbe134) at main.c:1388
>
> i would like know what struct db_val_t* argument v of of
> db_mysql_do_prepared_query function contains:
>
> static int db_mysql_do_prepared_query(const db_con_t* conn, const str *query,
> 	const db_val_t* v, int n, const db_val_t* uv, int un)
>
> i go to frame 1
>
> (gdb) frame 1
> #1  0xb758993e in db_mysql_do_prepared_query (conn=<value optimized out>, 
>     v=<value optimized out>, n=2, uv=0x0, un=0, query=<value optimized out>)
>     at dbase.c:443
> 443			if (db_mysql_val2bind( v+i , mysql_bind, i)<0 ) {
>
> and check args:
>
> (gdb) info args
> conn = <value optimized out>
> v = <value optimized out>
> n = 2
> uv = 0x0
> un = 0
> query = <value optimized out>
>
> (gdb) whatis v
> type = const db_val_t *
>
> but when i try to print type field of first v value, i get an error:
>
> (gdb) print v->type
> Cannot access memory at address 0x0
>
> same for other fields of v.
>
> what is it that i'm doing wrong?
>
> -- juha
>
>
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro




More information about the Devel mailing list