[reSIProcate] resiprocate stack memeory leak?????

FrankYuan frankyuan at emergent-netsolutions.com
Thu Sep 21 13:58:41 CDT 2006


I waited for more than 10 minutes to get the result of my previous email.

There are no calls for more than an hour, and I use gdb to print:
(gdb) p mTransactionController.mClientTransactionMap.size()
warning: can't find class named `resip::SipStack', as given by C++ RTTI
$1 = 1998
(gdb) p mTransactionController.mServerTransactionMap.size()
warning: can't find class named `resip::SipStack', as given by C++ RTTI
$2 = 10691


Thanks

Frank Yuan




Jason Fischl wrote:
> Transactions last for 32 seconds after they terminate. This means you
> have to wait at least 32 seconds after your last call to see if there
> is a leak.
>
> On 9/21/06, FrankYuan <frankyuan at emergent-netsolutions.com> wrote:
>>
>>  After call generator stopped for 10 minutes, I found that the resip
>> statistics did not have any problem on these FIFO queues.
>>  So I created core file and print the size of Transaction map.
>>  There are still lot of TIDs in the transaction map. At least it is 
>> part of
>> culprit to hold memory.
>>  Should there be a grarbage collection to free  these lost TIDs?
>>
>>  Here are the log files:
>>
>>  20060921-125408.091 | TuSelector.cxx:71 | Stats message
>>  20060921-125408.091 | StatisticsMessage.cxx:153 | RESIP:TRANSACTION
>>  TU summary: 0 TRANSPORT 0 TRANSACTION 0 CLIENTTX 1998 SERVERTX 10690 
>> TIMERS
>> 0
>>  Transaction summary: reqi 1225266 reqo 1200525 rspi 955555 rspo 1229993
>>  Details: INVi 383069/S322324/F36145 INVo 344348/S322414/F0 ACKi 
>> 312462 ACKo
>> 3223
>>  60 BYEi 507150/S507141/F0 BYEo 307875/S307111/F0 CANi 
>> 22517/S507141/F0 CANo
>> 2223
>>  /S1550/F593 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 0/S0/F0 OPTo 0/S0/F0 REGi
>> 68/S64/F0 R
>>  EGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 NOTi
>> 0/S0/F0 NOT
>>  o 0/S0/F0
>>  Retransmissions: INVx 116463 BYEx 105757 CANx 1499 MSGx 0 OPTx 0 REGx 0
>> finx 0 n
>>  onx 0 PUBx 0 SUBx 0 NOTx 0
>>  20060921-125708.084 | TuSelector.cxx:71 | Stats message
>>  20060921-125708.084 | StatisticsMessage.cxx:153 | RESIP:TRANSACTION
>>  TU summary: 0 TRANSPORT 0 TRANSACTION 0 CLIENTTX 1998 SERVERTX 10690 
>> TIMERS
>> 0
>>  Transaction summary: reqi 1225268 reqo 1200525 rspi 955555 rspo 1229995
>>  Details: INVi 383069/S322324/F36145 INVo 344348/S322414/F0 ACKi 
>> 312462 ACKo
>> 3223
>>  60 BYEi 507150/S507141/F0 BYEo 307875/S307111/F0 CANi 
>> 22517/S507141/F0 CANo
>> 2223
>>  /S1550/F593 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 0/S0/F0 OPTo 0/S0/F0 REGi
>> 70/S66/F0 R
>>  EGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 NOTi
>> 0/S0/F0 NOT
>>  o 0/S0/F0
>>  Retransmissions: INVx 116463 BYEx 105757 CANx 1499 MSGx 0 OPTx 0 REGx 0
>> finx 0 n
>>  onx 0 PUBx 0 SUBx 0 NOTx 0
>>  20060921-130008.078 | TuSelector.cxx:71 | Stats message
>>  20060921-130008.085 | StatisticsMessage.cxx:153 | RESIP:TRANSACTION
>>  TU summary: 0 TRANSPORT 0 TRANSACTION 0 CLIENTTX 1998 SERVERTX 10690 
>> TIMERS
>> 0
>>  Transaction summary: reqi 1225270 reqo 1200525 rspi 955555 rspo 1229997
>>  Details: INVi 383069/S322324/F36145 INVo 344348/S322414/F0 ACKi 
>> 312462 ACKo
>> 3223
>>  60 BYEi 507150/S507141/F0 BYEo 307875/S307111/F0 CANi 
>> 22517/S507141/F0 CANo
>> 2223
>>  /S1550/F593 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 0/S0/F0 OPTo 0/S0/F0 REGi
>> 72/S68/F0 R
>>  EGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 NOTi
>> 0/S0/F0 NOT
>>  o 0/S0/F0
>>  Retransmissions: INVx 116463 BYEx 105757 CANx 1499 MSGx 0 OPTx 0 REGx 0
>> finx 0 n
>>  onx 0 PUBx 0 SUBx 0 NOTx 0
>>
>>
>>  (gdb) p
>> (EnSipStack->myStack->mTransactionController->mClientTransactionMap)
>>  warning: can't find class named `resip::SipStack', as given by C++ RTTI
>>  $1 = {mMap = {_M_ht = {_M_node_allocator = {<No data fields>},
>>        _M_hash = {<No data fields>},
>>        _M_equals =
>> {<binary_function<resip::Data,resip::Data,bool>> = {<No
>> data f
>>  ields>}, <No data fields>},
>>        _M_get_key = {<unary_function<std::pair<const
>> resip::Data, resip::Transact
>>  ionState*>,const resip::Data>> = {<No data fields>}, <No data fields>},
>>        _M_buckets =
>> {<_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<const
>> res
>>  ip::Data, resip::TransactionState*>
>> >*,std::allocator<resip::TransactionState*>
>>  >> =
>> {<_Vector_alloc_base<__gnu_cxx::_Hashtable_node<std::pair<const
>> resip::Data
>>  , resip::TransactionState*>
>> >*,std::allocator<resip::TransactionState*>,true>> =
>>   {_M_start = 0x920bdd10, _M_finish = 0x920c9d14,
>>              _M_end_of_storage = 0x920c9d14}, <No data fields>}, <No 
>> data
>> fields>
>>  }, _M_num_elements = 1998}}}
>>  (gdb) p
>> (EnSipStack->myStack->mTransactionController->mServerTransactionMap)
>>  warning: can't find class named `resip::SipStack', as given by C++ RTTI
>>  $2 = {mMap = {_M_ht = {_M_node_allocator = {<No data fields>},
>>        _M_hash = {<No data fields>},
>>        _M_equals =
>> {<binary_function<resip::Data,resip::Data,bool>> = {<No
>> data f
>>  ields>}, <No data fields>},
>>        _M_get_key = {<unary_function<std::pair<const
>> resip::Data, resip::Transact
>>  ionState*>,const resip::Data>> = {<No data fields>}, <No data fields>},
>>        _M_buckets =
>> {<_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<const
>> res
>>  ip::Data, resip::TransactionState*>
>> >*,std::allocator<resip::TransactionState*>
>>  >> =
>> {<_Vector_alloc_base<__gnu_cxx::_Hashtable_node<std::pair<const
>> resip::Data
>>  , resip::TransactionState*>
>> >*,std::allocator<resip::TransactionState*>,true>> =
>>   {_M_start = 0x8cc3e790, _M_finish = 0x8cc567d4,
>>              _M_end_of_storage = 0x8cc567d4}, <No data fields>}, <No 
>> data
>> fields>
>>  }, _M_num_elements = 10691}}}
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>  Thanks
>>
>> Frank Yuan
>> Emergent-Netsolutions.com
>> 972-359-6600
>>
>>
>>  FrankYuan wrote:
>>  I am still working on it and will let you know as soon as I find
>> anything related.
>>
>> Thanks
>>
>> Frank Yuan
>> Emergent-Netsolutions.com
>> 972-359-6600
>>
>>
>>
>> Byron Campen wrote:
>>
>>
>>  This code was written long before my time here at resiprocate, so
>> I do not know. To those who are in the know, is this a relic that can
>> be safely done away with?
>>
>> Did you verify whether or not you had a genuine memory leak (this is
>> something I am very interested to know)?
>>
>> Best regards,
>> Byron Campen
>>
>>
>>
>>
>>  My question why NoSize(0U-1) is used for mSize when clear func is
>> called.
>>
>> mStateMachineFifo.size() may return either 0 or NoSize if the queue
>> is empty.
>>
>> It should alway return 0 if the queue is empty and NoSize should not
>> be used.
>>
>> NoSize causes confusion and is error prone.
>>
>> Thanks
>>
>> Frank Yuan
>> Emergent-Netsolutions.com
>> 972-359-6600
>>
>>
>>
>> Jason Fischl wrote:
>>
>>
>>  On 9/20/06, Byron Campen <bcampen at estacado.net> wrote:
>>
>>
>>  As for your questions about AbstractFifo, I am unsure why
>> mSize is
>> needed. Can anyone answer this (or, answer why clear is a no-op)?
>>
>>
>>  The clear method is virtual and gets defined in the subclasses.
>>
>> I believe that mSize is there as an optimization.
>>
>>
>>  _______________________________________________
>> resiprocate-devel mailing list
>> resiprocate-devel at list.sipfoundry.org
>> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>>
>>
>>
>



More information about the resiprocate-devel mailing list