[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