[pjsua2] Potential memory leak: Dialog seems not be destroyed

S.
SanveanRu .
Fri, Nov 11, 2016 4:08 PM

Hi, pjsip team.

First, I would like to thank you for the huge job you did with pjsip.
That's why it is a really handy and useful library with good potential.

Now, my question:
I am using pjsua2 with python. I have noticed, that after calls are
completed and corresponding transactions are terminated media resources (ie
recorders) are not freed, so after application stops, i see "Pool is not
released by application" messages. I have read, that resources are freed
after 32 seconds, but my app stops much later. Details are here:

18:35:18.204 dlg0x7f9e4402a  .Received Request msg BYE/cseq=102
(rdata0x7f9e44028308)
18:35:18.204 tsx0x7f9e4404b  ...Transaction created for Request msg
BYE/cseq=102 (rdata0x7f9e44028308)
18:35:18.204 tsx0x7f9e4404b  ..Incoming Request msg BYE/cseq=102
(rdata0x7f9e44028308) in state Null
18:35:18.204 tsx0x7f9e4404b  ...State changed from Null to Trying,
event=RX_MSG
18:35:18.204 dlg0x7f9e4402a  ....Transaction tsx0x7f9e4404b288 state
changed to Trying
18:35:18.204      endpoint  .....Response msg 200/BYE/cseq=102
(tdta0x7f9e4404b9f0) created
18:35:18.204 dlg0x7f9e4402a  ......Sending Response msg 200/BYE/cseq=102
(tdta0x7f9e4404b9f0)
18:35:18.204 tsx0x7f9e4404b  ......Sending Response msg 200/BYE/cseq=102
(tdta0x7f9e4404b9f0) in state Trying
18:35:18.205 tsx0x7f9e4404b  .......State changed from Trying to Completed,
event=TX_MSG
18:35:18.205 dlg0x7f9e4402a  ........Transaction tsx0x7f9e4404b288 state
changed to Completed

18:35:50.190 tsx0x7f9e4402b !Timeout timer event
18:35:50.191 tsx0x7f9e4402b  .State changed from Completed to Terminated,
event=TIMER
18:35:50.192 tsx0x7f9e4402b  Timeout timer event
18:35:50.192 tsx0x7f9e4402b  .State changed from Terminated to Destroyed,
event=TIMER
18:35:50.192 tdta0x7f9e4402  ..Destroying txdata Response msg
200/BYE/cseq=102 (tdta0x7f9e4402c8f0)
18:35:50.192 tsx0x7f9e4402b  Transaction destroyed!
18:35:50.205 tsx0x7f9e4404b  Timeout timer event
18:35:50.205 tsx0x7f9e4404b  .State changed from Completed to Terminated,
event=TIMER
18:35:50.205 dlg0x7f9e4402a  ..Transaction tsx0x7f9e4404b288 state changed
to Terminated
18:35:50.205 tsx0x7f9e4404b  Timeout timer event
18:35:50.205 tsx0x7f9e4404b  .State changed from Terminated to Destroyed,
event=TIMER
18:35:50.205 tdta0x7f9e4404  ..Destroying txdata Response msg
200/BYE/cseq=102 (tdta0x7f9e4404b9f0)
18:35:50.205 tsx0x7f9e4404b  Transaction destroyed!

And at the app shutdown:
18:39:57.355 dlg0x7f9e4402a  .Pool is not released by application,
releasing now

Maybe I need to destroy dialogs in some exclusive way?

--
Regards, Denis

Hi, pjsip team. First, I would like to thank you for the huge job you did with pjsip. That's why it is a really handy and useful library with good potential. Now, my question: I am using pjsua2 with python. I have noticed, that after calls are completed and corresponding transactions are terminated media resources (ie recorders) are not freed, so after application stops, i see "Pool is not released by application" messages. I have read, that resources are freed after 32 seconds, but my app stops much later. Details are here: 18:35:18.204 dlg0x7f9e4402a .Received Request msg BYE/cseq=102 (rdata0x7f9e44028308) 18:35:18.204 tsx0x7f9e4404b ...Transaction created for Request msg BYE/cseq=102 (rdata0x7f9e44028308) 18:35:18.204 tsx0x7f9e4404b ..Incoming Request msg BYE/cseq=102 (rdata0x7f9e44028308) in state Null 18:35:18.204 tsx0x7f9e4404b ...State changed from Null to Trying, event=RX_MSG 18:35:18.204 dlg0x7f9e4402a ....Transaction tsx0x7f9e4404b288 state changed to Trying 18:35:18.204 endpoint .....Response msg 200/BYE/cseq=102 (tdta0x7f9e4404b9f0) created 18:35:18.204 dlg0x7f9e4402a ......Sending Response msg 200/BYE/cseq=102 (tdta0x7f9e4404b9f0) 18:35:18.204 tsx0x7f9e4404b ......Sending Response msg 200/BYE/cseq=102 (tdta0x7f9e4404b9f0) in state Trying 18:35:18.205 tsx0x7f9e4404b .......State changed from Trying to Completed, event=TX_MSG 18:35:18.205 dlg0x7f9e4402a ........Transaction tsx0x7f9e4404b288 state changed to Completed 18:35:50.190 tsx0x7f9e4402b !Timeout timer event 18:35:50.191 tsx0x7f9e4402b .State changed from Completed to Terminated, event=TIMER 18:35:50.192 tsx0x7f9e4402b Timeout timer event 18:35:50.192 tsx0x7f9e4402b .State changed from Terminated to Destroyed, event=TIMER 18:35:50.192 tdta0x7f9e4402 ..Destroying txdata Response msg 200/BYE/cseq=102 (tdta0x7f9e4402c8f0) 18:35:50.192 tsx0x7f9e4402b Transaction destroyed! 18:35:50.205 tsx0x7f9e4404b Timeout timer event 18:35:50.205 tsx0x7f9e4404b .State changed from Completed to Terminated, event=TIMER 18:35:50.205 dlg0x7f9e4402a ..Transaction tsx0x7f9e4404b288 state changed to Terminated 18:35:50.205 tsx0x7f9e4404b Timeout timer event 18:35:50.205 tsx0x7f9e4404b .State changed from Terminated to Destroyed, event=TIMER 18:35:50.205 tdta0x7f9e4404 ..Destroying txdata Response msg 200/BYE/cseq=102 (tdta0x7f9e4404b9f0) 18:35:50.205 tsx0x7f9e4404b Transaction destroyed! And at the app shutdown: 18:39:57.355 dlg0x7f9e4402a .Pool is not released by application, releasing now Maybe I need to destroy dialogs in some exclusive way? -- Regards, Denis