[JDEV] Crash in jabberd using mysql
Bernard Littau
bernardl at acumenassociates.com
Tue Sep 9 17:57:02 CDT 2003
I love talking to myself :-)
A little more work with gdb shows that the offending value is in fact stack
garbage from an uninitialized automatic. I fixed the problem by
initializing the automatics to null, although a better fix might be not to
call the xdb_sql_querydef function with the uninitialzed values. I didn't
trace the querydef to see if not executing had some other side effect, and
for the moment, passing null pointers seems to be ok.
Now, this means that everyone else just has better stack garbage than I do,
or I am running older code, or something else.
I am running xdb_sql 1.3, which as near as I can tell is the latest tarball
out on the net. My source code is the same as what is on JabberStudio in
the CVS viewer.
I realize the focus of jdev is the jabberd 2 implementation. I'll likely
switch to that now that it is in beta, but I need to deploy this pronto, so
I was trying to heed the warnings about real world use of jabberd 2.
Is it pointless to post about this older stuff here in jdev? Is there a
better place? Jadmin, perhaps?
Thanks,
Bernard Littau
Acumen Associates
> Bernard Littau
> Sent: Monday, September 08, 2003 6:10 PM
>
> Hi All,
>
> So far I have not been able to get the xdb_sql package with mysql to run
> correctly with jabberd 1.4.2. I figured out how to use enough of gdb to
> get
> the information pasted below. Is this a known problem?
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x40052e10 in do_replace (qd=0x8206050, var=0x8206158, value=0x1 <Address
> 0x1 out of bounds>) at xdb_sql_querydef.c:172
> 172 if (ef_value && strlen(ef_value) == 0 && var->default_value)
> (gdb) l
> 167 next = strstr(qd->query_text,var->replace_text);
> 168 if (!next)
> 169 return;
> 170
> 171 ef_value = value;
> 172 if (ef_value && strlen(ef_value) == 0 && var->default_value)
> 173 ef_value = var->default_value;
> 174 if (ef_value)
> 175 { /* may need to escape the value */
> 176 int repl_len = strlen(ef_value);
> (gdb) bt
> #0 0x40052e10 in do_replace (qd=0x8206050, var=0x8206158, value=0x1
> <Address 0x1 out of bounds>) at xdb_sql_querydef.c:172
> #1 0x40053077 in xdbsql_querydef_setvar (qd=0x8206050, name=0x40058cb2
> "token", value=0x1 <Address 0x1 out of bounds>)
> at xdb_sql_querydef.c:247
> #2 0x4004ec84 in xdbsql_auth0k_set (self=0x8114368, user=0x820f640
> "bl34 at plato.acumenassociates.com", data=0x0)
> at xdb_sql_auth0k.c:244
> #3 0x4004e292 in module_call (self=0x8114368, mod=0x813f4a0, p=0x820f328,
> user=0x820f640 "bl34 at plato.acumenassociates.com")
> at xdb_sql.c:172
> #4 0x4004e13d in xdb_sql_phandler (i=0x8111ab8, p=0x820f328,
> args=0x8114368) at xdb_sql.c:131
> #5 0x08054698 in deliver_instance (i=0x8111ab8, p=0x820f328) at
> deliver.c:689
> #6 0x08053e35 in deliver (p=0x820f328, i=0x810a6d8) at deliver.c:482
> #7 0x08055de4 in xdb_deliver (i=0x810a6d8, xc=0x8184058) at xdb.c:107
> #8 0x08056300 in xdb_act (xc=0x810a8a8, owner=0x820eca8, ns=0x4002f95a
> "jabber:iq:auth:0k", act=0x0, match=0x0, data=0x0)
> at xdb.c:270
> #9 0x0805642b in xdb_set (xc=0x810a8a8, owner=0x820eca8, ns=0x4002f95a
> "jabber:iq:auth:0k", data=0x0) at xdb.c:296
> #10 0x4002274d in mod_auth_0k_reg (m=0x8184198, arg=0x0) at
> mod_auth_0k.c:217
> #11 0x4001ccc6 in js_mapi_call (si=0x810a858, e=6, packet=0x820eb70,
> user=0x0, s=0x0) at modules.c:160
> #12 0x4001d38d in js_authreg (arg=0x820eb70) at authreg.c:101
> #13 0x080566f6 in mtq_main (arg=0x8152028) at mtq.c:151
> #14 0x0807d4ab in pth_spawn_trampoline ()
>
>
> Thanks,
>
> Bernard Littau
> Acumen Associates
>
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev
More information about the JDev
mailing list