[Devel] SF.net SVN: openser: [1750] trunk/modules/dialog

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Mar 6 18:23:05 CET 2007


Hi Aron,

this is a typical trace resulting from a old race between a negative 
reply and a 200 OK )both being forwarded to UAC) and it is fixed in the 
new version.

regards,
bogdan

Aron Rosenberg wrote:
> Bogdan,
>
> 	Do you think the big dialog module checkin that you just
> committed would fix the following crash that we have seen with SVN rev
> 1639. I was about to submit this as a bug, but will retest to see if we
> keep getting this same crash with rev 1750
>
> (gdb) where
> #0  0xb793ce49 in insert_dlg_timer (tl=0xb5e69170, interval=120) at
> dlg_timer.c:89
> #1  0xb7938e99 in dlg_onreply (t=0xb64ed4c8, type=128, param=0xb7d85fe4)
> at dlg_handlers.c:318
> #2  0xb7d6d18b in run_trans_callbacks () from
> /usr/lib/openser/modules/tm.so
> #3  0xb7d755c0 in relay_reply () from /usr/lib/openser/modules/tm.so
> #4  0xb7d75e51 in reply_received () from /usr/lib/openser/modules/tm.so
> #5  0x0805aa36 in forward_reply ()
> #6  0x080722a9 in receive_msg ()
> #7  0x08092ff2 in udp_rcv_loop ()
> #8  0x08065870 in main_loop ()
> #9  0x08065f3f in main ()
> (gdb) l
> 84      static inline void insert_dlg_timer_unsafe(struct dlg_tl *tl)
> 85      {
> 86              struct dlg_tl* ptr;
> 87
> 88              for(ptr = d_timer->first.prev; ptr != &d_timer->first ;
> ptr = ptr->prev) {
> 89                      if ( ptr->timeout <= tl->timeout )
> 90                              break;
> 91              }
> 92
> 93              DBG("DEBUG:dialog:insert_tl: inserting %p for %d\n",
>  (gdb) p tl
> $1 = (struct dlg_tl *) 0xb5e69170
> (gdb) p *tl
> $2 = {next = 0x0, prev = 0x0, timeout = 5692}
> (gdb) p d_timer
>  (gdb) p &d_timer->first
> $9 = (struct dlg_tl *) 0xb5a97ee0   <---- < for loop should end here >
>  (gdb) p d_timer->first.prev
> $10 = (struct dlg_tl *) 0xb5d9ff18
> (gdb) p d_timer->first.prev->prev
> $11 = (struct dlg_tl *) 0xb634bc78
> (gdb) p d_timer->first.prev->prev->prev
> $12 = (struct dlg_tl *) 0xb5e60028
> (gdb) p d_timer->first.prev->prev->prev->prev
> $13 = (struct dlg_tl *) 0xb5da7318
> (gdb) p d_timer->first.prev->prev->prev->prev->prev
> $14 = (struct dlg_tl *) 0xb6173ed8
> (gdb) p d_timer->first.prev->prev->prev->prev->prev->prev
> $15 = (struct dlg_tl *) 0xb5ef88a0
> (gdb) p d_timer->first.prev->prev->prev->prev->prev->prev->prev
> $16 = (struct dlg_tl *) 0xb61d2670
> (gdb) p d_timer->first.prev->prev->prev->prev->prev->prev->prev->prev
> $17 = (struct dlg_tl *) 0x35333731
> (gdb) p
> d_timer->first.prev->prev->prev->prev->prev->prev->prev->prev->prev
> Cannot access memory at address 0x35333735 
>
>
>
>
> -----Original Message-----
> From: devel-bounces at openser.org [mailto:devel-bounces at openser.org] On
> Behalf Of Bogdan-Andrei Iancu
> Sent: Tuesday, March 06, 2007 1:09 AM
> To: devel at openser.org
> Subject: [Devel] SF.net SVN: openser: [1750] trunk/modules/dialog
>
> Revision: 1750
>           http://openser.svn.sourceforge.net/openser/?rev=1750&view=rev
> Author:   bogdan_iancu
> Date:     2007-03-06 01:08:33 -0800 (Tue, 06 Mar 2007)
>
> Log Message:
> -----------
> - major fixup by adding a state-machine (protected by lock) for dialog
>   state transitions.
>   This eliminates the races between concurent events (multiple 200 OK,
> 200 OK 
>   and negative reply, 200 OK and ACK, BYE and timeout, etc).
>   Also the races from the timer list ops were eliminated.
>
> Modified Paths:
> --------------
>     trunk/modules/dialog/dlg_handlers.c
>     trunk/modules/dialog/dlg_hash.c
>     trunk/modules/dialog/dlg_hash.h
>     trunk/modules/dialog/dlg_timer.c
>
>
> This was sent by the SourceForge.net collaborative development platform,
> the world's largest Open Source development site.
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel
>
>   




More information about the Devel mailing list