<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><base href="x-msg://733/"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The exceptions you are seeing are almost certainly the result of heap corruption in your code, which is going to become quickly off-topic for this list.  However to get you started on fixing this problem:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The heap is being validated during the CRT heap calls in debug mode, which explains why you see the exception happening with different call stacks.  One way to help diagnose heap corruption is to place “assert( _CrtCheckMemory() );” in various places where you think the corruption may be occurring.  That will force a heap validation in a known location, rather than just relying on the CRT debug heap functions to perform the validation whenever they happen to be called.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Chris Richardson<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>WTI<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> live-devel-bounces@ns.live555.com [mailto:live-devel-bounces@ns.live555.com] <b>On Behalf Of </b>Erlandsson, Claes P (CERLANDS)<br><b>Sent:</b> Friday, September 14, 2012 11:55 AM<br><b>To:</b> LIVE555 Streaming Media - development & use<br><b>Subject:</b> Re: [Live-devel] Re-connection handling<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal style='margin-left:.5in'><span class=apple-style-span><span style='font-family:"Courier New"'>There is one case where it doesn't work though, and I'm not sure how to handle it. This is if I do a seek while the stream is disconnected, then it never reconnects. In some cases I play a 10s loop where a timer do a seek every 10s and jumps back (using absolute seeking). Those streams never reconnect after a disconnection.</span></span><span class=apple-style-span><span style='font-size:13.5pt'><o:p></o:p></span></span></p><div><div><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New";color:black'> </span><o:p></o:p></p></div></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><p class=MsoNormal style='margin-left:.5in'>OK, so unless you can tell me a reliable way to reproduce this problem (perhaps using "openRTSP), then you'll need to figure out yourself why the LIVE555 library's connection reestablishment code is not working in this case (and then I'll try to fix it).  Remember, You Have Complete Source Code.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>The place to look in the code is near the start of "RTSPClient::sendRequest()" (line 535 of "liveMedia/RTSPClient.cpp").  When you do your 'seek' (really "PLAY") operation (that's failing), then is "fInputSocketNum" <0?  If so, then what value does "openConnection()" return.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>If, however, "fInputSocketNum" is >= 0 (in practice, it will be >0), then we will (eventually) call "send()" (at line 787) to transmit the command.  Is this "send()" call succeeding, or not?<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>I've finally come around to try to dig deeper into this reconnect issue. First, I'd like to point out that I've updated to the latest liveMedia code (2012.09.13) and I've redesigned my program to only access/create liveMedia objects/functions within a function triggered by triggerEvent().<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>I put some debug messages in RTSPClient::sendRequest(), but it doesn't seem to end up there when I do the seek. I do get an exception at random locations. Sometimes it happens without me doing anything, i.e. directly when the connection has been re-established, other times the exception occurs after I try to do something to the RTSP stream, e.g. stop or seek.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>Below is an example of the call stack for an exception:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>...<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!_free_base(void * pBlock=0x61d4d496)<o:p></o:p></span></p><p class=MsoNormal><span lang=SV style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!_unlock(int locknum=4)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!operator delete(void * pUserData=0x06a2acf0)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!operator delete(void * pUserData=0x06a2acf0)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!_free_base(void * pBlock=0x05051718)<o:p></o:p></span></p><p class=MsoNormal><span lang=SV style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!strerror(int errnum=111825400)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!BasicUsageEnvironment0::setResultErrMsg()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!readsocket()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!RTSPClient::incomingDataHandler()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!BasicTaskScheduler::SingleStep()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!BasicTaskScheduler0::doEventLoop()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>...</span><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>here is another one:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>...<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!malloc(unsigned int size=21)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>msvcr90d.dll!operator new(unsigned int size=21)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!BasicTaskScheduler::SingleStep()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>RtspVideo.dll!BasicTaskScheduler0::doEventLoop()<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:#0070C0'>...</span><span style='font-family:"Courier New";color:black'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>Please let me know what I can do to help. I'll continue to look in to this.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>Again, what I do is:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#7030A0'>1. Play an archive (i.e. non-live) stream.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#7030A0'>2. Unplug Ethernet cable.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#7030A0'>3. Do a seek while disconnected.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#7030A0'>4. Plug in Ethernet cable.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>I get an exception every time, but as mentioned above, it appears slightly different and the call stack usually looks different each time.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:black'>/Claes<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p></div></div></body></html>