[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