<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi,<BR>Crash bug introduced in version 2013.04.21 is not fixed in 2013.04.29. Occasionally at session shutdown SocketDescriptor object still gets accessed after it was deleted. Version 2013.04.16 does not have such problem.<BR> <BR>Here's some info:<BR> <BR>Exception info:<BR>EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)<br>ExceptionAddress: 00000000101041db (RTSPRec!SocketDescriptor::tcpReadHandler+0x000000000000008b)<br> ExceptionCode: c0000005 (Access violation)<br> ExceptionFlags: 00000000<br>NumberParameters: 2<br> Parameter[0]: 0000000000000000<br> Parameter[1]: 00000000dddddddd<br>Attempt to read from address 00000000dddddddd<BR><br>Crash stack:<BR>ChildEBP RetAddr Args to Child <br>03a3f65c 1012525e 0478fc10 00000002 88e18a61 RTSPRec!SocketDescriptor::tcpReadHandler+0x8b<br>03a3fa08 1012759b 00000000 03a3fa28 047838f8 RTSPRec!BasicTaskScheduler::SingleStep+0x72e<br>03a3fa1c 100ac67e 04783729 03a3fbe8 03a3fb0c RTSPRec!BasicTaskScheduler0::doEventLoop+0x3b<br>03a3fb04 100a82f8 88e18b91 03a3fcf4 0050ca04 RTSPRec!CRTSPHandler::ShutdownSession+0xae<br>03a3fbf8 100a1c6d 03a3fdf8 0050ca04 0050ca68 RTSPRec!CRTSPHandler::Uninit+0xa8<br>03a3fcf4 1009ffcf 20000000 0050ca04 0050ca68 RTSPRec!CRTSPReceiver::UninitRTSP+0x3d<br>03a3fdf8 672724fa 04782ff0 00000260 0050ce44 RTSPRec!CRTSPReceiver::Stop+0x6f<BR><br>SocketDescriptor::tcpReadHandler local members:<BR>0:022:x86> dv<br>socketDescriptor = 0x0478fc10<br> mask = 0n2<br> count = 0x7d0<BR><br>SocketDescriptor class members:<BR>0:022:x86> ?? socketDescriptor<br>class SocketDescriptor * 0x0478fc10<br> +0x000 __VFN_table : 0xdddddddd <br> +0x004 fEnv : 0xdddddddd UsageEnvironment<br> +0x008 fOurSocketNum : 0n-572662307<br> +0x00c fSubChannelHashTable : 0xdddddddd HashTable<br> +0x010 fServerRequestAlternativeByteHandler : 0xdddddddd void +ffffffffdddddddd<br> +0x014 fServerRequestAlternativeByteHandlerClientData : 0xdddddddd Void<br> +0x018 fStreamChannelId : 0xdd ''<br> +0x019 fSizeByte1 : 0xdd ''<br> +0x01a fReadErrorOccurred : ffffffffffffffdd<br> +0x01b fDeleteNext : ffffffffffffffdd<br> +0x01c fTCPReadingState : 0xdddddddd (No matching name)<BR><br>socketDescriptor is toast<BR> <BR>void SocketDescriptor::tcpReadHandler(SocketDescriptor* socketDescriptor, int mask) {<br> // Call the read handler until it returns false, with a limit to avoid starving other sockets<br> unsigned count = 2000;<br> while (!socketDescriptor->fDeleteNext && socketDescriptor->tcpReadHandler1(mask) && --count > 0) {}<br> if (socketDescriptor->fDeleteNext) delete socketDescriptor; <- Crash here<br>}<br><BR>Krishna.<BR> <BR> <BR> </div></body>
</html>