[Devel] SF.net SVN: openser: [1750] trunk/modules/dialog
Aron Rosenberg
arosenberg at sightspeed.com
Tue Mar 6 18:17:33 CET 2007
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
More information about the Devel
mailing list