On Dienstag, 26. Mai 2009, Christian Koch wrote:
> > Can you configure the kamailio server that it generates a core file?
> > Then take a look to the backtrace where the invalid memory access was
> > done, to verify if its really crashed in the core function, or perhaps
> > some other parts has a problem here. Further informations:
> > http://www.kamailio.org/dokuwiki/doku.php/troubleshooting:corefiles

Hi Christian,

> We generated a core file, the output of the backtrace is:
>
> (gdb) bt
> #0  0x00b237a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
> #1  0x00b64825 in raise () from /lib/tls/libc.so.6
> #2  0x00b66289 in abort () from /lib/tls/libc.so.6
> #3  0x080c4436 in qm_free (qm=0x81677e0, p=0x0, file=0x811728e
> "proxy.c", func=0x811724e "hostent_cpy", line=187) at mem/q_malloc.c:444
> #4  0x0807e329 in hostent_cpy (dst=0x8266e28, src=0x8146134) at proxy.c:187
> [..]

Thanks for the backtrace, you could try the attached patch (for 1.5.x) if it 
solves the crash for you. The additional free after the loop looks indeed a 
bit suspicious.

> So, there may be an error in proxy.c, but perhaps the reason for our
> problem is in modules/htable/ht_var.c in pv_parse_ht_name(), where the
> variable hpv is not freed?
> Any comments on pv_parse_ht_name() are greatly appreciated. We could try
> to fix this, but we're not sure about the sideeffects.

I also suspect the reason for the crash lays in this area. I did not wrote 
that module, thus i asked Daniel.

Regards,
Henning
Index: proxy.c
===================================================================
--- proxy.c	(revision 5842)
+++ proxy.c	(working copy)
@@ -184,7 +184,6 @@
 		ser_error=ret=E_OUT_OF_MEM;
 		pkg_free(dst->h_name);
 		for(r=0; dst->h_aliases[r]; r++)	pkg_free(dst->h_aliases[r]);
-		pkg_free(dst->h_aliases[r]);
 		pkg_free(dst->h_aliases);
 		goto error;
 	}
@@ -195,7 +194,6 @@
 			ser_error=ret=E_OUT_OF_MEM;
 			pkg_free(dst->h_name);
 			for(r=0; dst->h_aliases[r]; r++)	pkg_free(dst->h_aliases[r]);
-			pkg_free(dst->h_aliases[r]);
 			pkg_free(dst->h_aliases);
 			for (r=0; r<i;r++) pkg_free(dst->h_addr_list[r]);
 			pkg_free(dst->h_addr_list);
_______________________________________________
Kamailio (OpenSER) - Users mailing list
Users@lists.kamailio.org
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users

Reply via email to