Hi Stefan,

Thanks! Somehow I've seen (this=0x6) as well, but it didn't occur to me that it was the cause of the problem... duh!
You put me on the right track, because I think I nailed it now...
Regards,

Tom


-------- Originele bericht --------
Onderwerp: Re: [Sems] thread issue
Van: Tom van der Geer <[email protected]>
Aan: Stefan Sayer <[email protected]>
CC: [email protected]
Datum: 20-5-2009 9:48
Stefan Sayer writes:
Hello,

o Peter Loeppky [05/13/09 17:21]:
I have a B2B application running.  Every now and again, I am having an
issue with some threads got getting destroyed. From what I can tell, it
appears that it is the second legs that stays open.

this happens if in your application you don't call setStopped() for all possible cases.

Usually with b2b apps that is failed calls on the second leg. IIRC you need to check whether the dialog's status changes from Pending to Disconnected in onSipReply, or, in the caller leg, you need to call terminateOtherLeg(). It's not really intuitive; do you think we should introduce onFailedCall event handler?

Stefan
Stefan, can you elaborate a bit more on this? I'm also working on a B2B application and occasionally SEMS crashes which might be caused by too much (or too little) session/thread cleanup. When SEMS crashes it happens during destructing my AmB2BCallerSession derived class (~MyCallerDialog()). It mentions:

(8707) DEBUG: [b7257bb0] ~MyCallerDialog (MyApplication.cpp:373): MyCallerDialog::~MyCallerDialog() (8707) DEBUG: [b7257bb0] ~AmB2BSession (AmB2BSession.cpp:51): relayed_req.size() = 0 (8707) DEBUG: [b7257bb0] ~AmB2BSession (AmB2BSession.cpp:52): recvd_req.size() = 0 (8707) DEBUG: [b7257bb0] ~AmSipDialog (AmSipDialog.cpp:50): callid = [email protected] (8707) DEBUG: [b7257bb0] ~AmSipDialog (AmSipDialog.cpp:51): local_tag = 547A01EE-4A0D5DA7000A5A3A-B7459BB0 (8707) DEBUG: [b7257bb0] ~AmSipDialog (AmSipDialog.cpp:52): uac_trans.size() = 1 (8707) DEBUG: [b7257bb0] ~AmSipDialog (AmSipDialog.cpp:57): cseq = 10; method = INVITE (8707) DEBUG: [b7257bb0] ~AmSipDialog (AmSipDialog.cpp:60): uas_trans.size() = 0
*** glibc detected *** free(): invalid pointer: 0x081a5c10 ***

or

*** glibc detected: double free or corruption (!prev)

Crashes are not exactly reproducible, but happen after 10 and sometimes even 500 successful calls. Quite possibly I'm not covering all scenario's (e.g. LEG B busy) correctly. Any hints? Thanks in advance!
Best regards,

Tom

_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems

_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems

Reply via email to