Hello,<br><br>my answer is inline:<br><br><div class="gmail_quote">2011/5/12 Timo Reimann <span dir="ltr">&lt;<a href="mailto:timo.reimann@1und1.de">timo.reimann@1und1.de</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hey,<br>
<div class="im"><br>
<br>
On 12.05.2011 12:37, Anton Roman wrote:<br>
&gt; we got a core in dialog module. We are using kamailio 3.1.2. Below you<br>
&gt; can find a full backtrace from the dump and the Kamailio compilation<br>
&gt; options. Please, if you need further information don&#39;t hesitate to ask<br>
&gt; me for it.  I can&#39;t precise the situation when it is generated because<br>
&gt; we have a quite high load in this server.<br>
<br>
</div>The call path seems to be like this:<br>
<br>
transaction timer fires -&gt; tm module walking through callback list finds<br>
unref_dlg() -&gt; tm module calls unref_dlg() -&gt; boom.<br>
<br>
I wonder why unref_dlg() was registered as a tm callback in the first<br>
place -- the dialog module shouldn&#39;t do that. Are you using any custom<br>
modules that would possibly do such registrations?<br></blockquote><div><br>No, we aren&#39;t. We got the code of all the modules directly from the git repository.  <br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<br>
As to the reason of the segfault, the dialog structure or hash table may<br>
already be gone when unref_dlg() is called. Can you go to stack #0 and<br>
tell us what the value of each of the following data structures is (use<br>
&quot;p &lt;data structure&gt; in gdb):<br>
<br>
*dlg<br>
d_table<br>
d_table-&gt;entries<br></blockquote><div><br>Here you have:<br><br></div>(gdb) p *dlg<br>$1 = {ref = 793790803, next = 0xa0d4b4f20303032, prev = 0x504953203a616956, h_id = 808333871, h_entry = 1346655535, state = 775174432, <br>
  lifetime = 841888562, start_ts = 892219952, dflags = 808794678, sflags = 1648046134, toroute = 1668178290, toroute_name = {<br>    s = 0x62344768397a3d68 &lt;Address 0x62344768397a3d68 out of bounds&gt;, len = 946221643}, from_rr_nb = 1886534457, tl = {<br>
    next = 0x72460a0d30363035, prev = 0x6f6e4122203a6d6f, timeout = 1869445486}, callid = {<br>    s = 0x6f6e613a7069733c &lt;Address 0x6f6e613a7069733c out of bounds&gt;, len = 1869445486}, from_uri = {<br>    s = 0x3230322e33322e34 &lt;Address 0x3230322e33322e34 out of bounds&gt;, len = 1043739950}, to_uri = {<br>
    s = 0x396637643173613d &lt;Address 0x396637643173613d out of bounds&gt;, len = 221656933}, req_uri = {<br>    s = 0x34333a7069733c20 &lt;Address 0x34333a7069733c20 out of bounds&gt;, len = 925972025}, tag = {{<br>    s = 0x33322e3539314030 &lt;Address 0x33322e3539314030 out of bounds&gt;, len = 942747189}, {<br>
    s = 0x743b3e303630353a &lt;Address 0x743b3e303630353a out of bounds&gt;, len = 1178429281}}, cseq = {{<br>    s = 0x364134322d344434 &lt;Address 0x364134322d344434 out of bounds&gt;, len = 1631848973}, {<br>    s = 0x203932202c697246 &lt;Address 0x203932202c697246 out of bounds&gt;, len = 544236883}}, route_set = {{<br>
    s = 0x343a30313a333020 &lt;Address 0x343a30313a333020 out of bounds&gt;, len = 1296506937}, {<br>    s = 0x203a44492d6c6c61 &lt;Address 0x203a44492d6c6c61 out of bounds&gt;, len = 1630549808}}, contact = {{<br>    s = 0x6639633663313634 &lt;Address 0x6639633663313634 out of bounds&gt;, len = 858808881}, {<br>
    s = 0x6464363632663631 &lt;Address 0x6464363632663631 out of bounds&gt;, len = 775174464}}, bind_addr = {0x530a0d36352e3230, <br>    0x43203a7265767265}, cbs = {first = 0x5049532d6f637369, types = 1702125895}, profile_links = 0x782e32312d534f49}<br>
(gdb) p d_table<br>$2 = (struct dlg_table *) 0x7f08a9e38ee0<br>(gdb) p d_table-&gt;entries<br>$3 = (struct dlg_entry *) 0x7f08a9e38f00<br>(gdb) info f<br>Stack level 0, frame at 0x7fff49059980:<br> rip = 0x7f08cc18fa39 in unref_dlg (dlg_hash.c:598); saved rip 0x7f08ce92fa02<br>
 called by frame at 0x7fff49059a10<br> source language c.<br> Arglist at 0x7fff490598a8, args: dlg=0x7f08a9f67da8, cnt=1<br> Locals at 0x7fff490598a8, Previous frame&#39;s sp is 0x7fff49059980<br> Saved registers:<br>  rbx at 0x7fff49059948, rbp at 0x7fff49059950, r12 at 0x7fff49059958, r13 at 0x7fff49059960, r14 at 0x7fff49059968, r15 at 0x7fff49059970,<br>
  rip at 0x7fff49059978<br>(gdb) <br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
<br>
Cheers,<br>
<font color="#888888"><br>
--Timo<br>
</font><div><div></div><div class="h5"><br></div></div></blockquote><div> <br></div><div>Thank you very much,<br><br>Regards,<br>Antón<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div class="h5">
<br>
<br>
&gt; (gdb) bt full<br>
&gt; #0  unref_dlg (dlg=0x7f08a9f67da8, cnt=1) at dlg_hash.c:598<br>
&gt;     d_entry = (struct dlg_entry *) 0x7f10304b8b68<br>
&gt; #1  0x00007f08ce92fa02 in run_trans_callbacks_internal<br>
&gt; (cb_lst=0x7f08aa203e98, type=32768, trans=0x7f08aa203e28,<br>
&gt; params=0x7fff49059a10)<br>
&gt;     at t_hooks.c:290<br>
&gt;     cbp = (struct tm_callback *) 0x7f08a9f6e7e0<br>
&gt;     backup_from = (avp_list_t *) 0x8b3330<br>
&gt;     backup_to = (avp_list_t *) 0x8b3338<br>
&gt;     backup_dom_from = (avp_list_t *) 0x8b3340<br>
&gt;     backup_dom_to = (avp_list_t *) 0x8b3348<br>
&gt;     backup_uri_from = (avp_list_t *) 0x8b3320<br>
&gt;     backup_uri_to = (avp_list_t *) 0x8b3328<br>
&gt; #2  0x00007f08ce92fc56 in run_trans_callbacks (type=32768, trans=&lt;value<br>
&gt; optimized out&gt;, req=0x1, rpl=0x7f10304b8b68, code=-868566200)<br>
&gt;     at t_hooks.c:317<br>
&gt;     params = {req = 0x0, rpl = 0x0, param = 0x7f08a9f6e7f0, code = 0,<br>
&gt; flags = 0, branch = 0, t_rbuf = 0x0, dst = 0x0, send_buf = {<br>
&gt;     s = 0x0, len = 0}}<br>
&gt; #3  0x00007f08ce915b36 in free_cell (dead_cell=0x7f08aa203e28) at<br>
&gt; h_table.c:136<br>
&gt;     b = &lt;value optimized out&gt;<br>
&gt;     i = &lt;value optimized out&gt;<br>
&gt;     rpl = &lt;value optimized out&gt;<br>
&gt;     tt = &lt;value optimized out&gt;<br>
&gt;     foo = &lt;value optimized out&gt;<br>
&gt;     cbs = &lt;value optimized out&gt;<br>
&gt; ---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---<br>
&gt;     __FUNCTION__ = &quot;free_cell&quot;<br>
&gt; #4  0x00007f08ce9319f1 in wait_handler (ti=&lt;value optimized out&gt;,<br>
&gt; wait_tl=&lt;value optimized out&gt;, data=&lt;value optimized out&gt;) at timer.c:645<br>
&gt;     p_cell = (struct cell *) 0x7f08aa203e28<br>
&gt; #5  0x0000000000513d8f in timer_main () at timer.c:894<br>
&gt; No locals.<br>
&gt; #6  0x000000000046501b in main_loop () at main.c:1618<br>
&gt;     i = 4<br>
&gt;     pid = &lt;value optimized out&gt;<br>
&gt;     si = (struct socket_info *) 0x0<br>
&gt;     si_desc = &quot;udp receiver child=3<br>
&gt; sock=XXX.XXX.XXX.XX:XXXX\000\000\000\210�\231\000\000\000\000\000\031&quot;,<br>
&gt; &#39;\0&#39; &lt;repeats 15 times&gt;, &quot;\001\000\000\000\000\000\000\000�\215\213&quot;,<br>
&gt; &#39;\0&#39; &lt;repeats 13 times&gt;, &quot;\004&quot;, &#39;\0&#39; &lt;repeats 15 times&gt;,<br>
&gt; &quot;\b\236\005I�\177\000\000\227%J\000\000\000\000&quot;<br>
&gt; #7  0x0000000000467873 in main (argc=&lt;value optimized out&gt;,<br>
&gt; argv=0x7fff49059e08) at main.c:2398<br>
&gt;     cfg_stream = (FILE *) 0x12e1010<br>
&gt;     c = &lt;value optimized out&gt;<br>
&gt;     r = &lt;value optimized out&gt;<br>
&gt;     tmp = 0x7fff4905ae90 &quot;&quot;<br>
&gt;     tmp_len = 32520<br>
&gt;     port = &lt;value optimized out&gt;<br>
&gt;     proto = &lt;value optimized out&gt;<br>
&gt;     ret = &lt;value optimized out&gt;<br>
&gt;     seed = 1235801225<br>
&gt; ---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---<br>
&gt;     rfd = 4<br>
&gt;     debug_save = &lt;value optimized out&gt;<br>
&gt;     debug_flag = 0<br>
&gt;     dont_fork_cnt = 0<br>
&gt;     n_lst = &lt;value optimized out&gt;<br>
&gt;     p = &lt;value optimized out&gt;<br>
&gt; (gdb)<br>
&gt; (gdb) quit<br>
&gt; kamailio2:/var/kamailio# kamailio -V<br>
&gt; version: kamailio 3.1.2 (x86_64/linux) eb24c1-dirty<br>
&gt; flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS,<br>
&gt; DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC,<br>
&gt; DBG_QM_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE,<br>
&gt; USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES<br>
&gt; ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,<br>
&gt; MAX_URI_SIZE 1024, BUF_SIZE 65535, PKG_SIZE 8MB<br>
&gt; poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.<br>
&gt; id: eb24c1 -dirty<br>
&gt; compiled on 09:35:52 Apr 28 2011 with gcc 4.3.2<br>
</div></div></blockquote></div><br>