[reSIProcate] resiprocate stack memeory leak?????
Jason Fischl
jason at counterpath.com
Thu Sep 21 13:52:29 CDT 2006
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