<html><head><meta name="qrichtext" content="1" /></head><body style="font-size:8pt;font-family:Bitstream Vera Sans">
<p>Hi everyone,</p>
<p></p>
<p>We are currently working on a voluntary-based university project which use a real time video streaming inside a “vision server”. We use this software inside an AUV (Autonomous Underwater Vehicle, http://sonia.etsmtl.ca/en ) to send a video stream from the submarine's cameras or from the processed image (detection of objects in the image) to a remote client.</p>
<p></p>
<p>We choose live555 for our streaming needs because the library is stable and well-maintained. But, we currently have a problem with socket hang inside LiveStreamer. The streaming works fine for a while, then it hang. Usually it happens either when creating a new stream or when we let it run for a while.</p>
<p></p>
<p>We searched for a while and could not solve the problem or make a workaround as our knowledge of the library is still limited. So I thought someone here could help us.</p>
<p>We use live version 2007-08-03a.</p>
<p></p>
<p><span style="font-style:italic">I included a stack trace: </span></p>
<p></p>
<p><span style="font-family:Courier New">#0 0xb7f68410 in __kernel_vsyscall ()</span></p>
<p><span style="font-family:Courier New">#1 0xb77e8521 in ?? () from /lib/libc.so.6</span></p>
<p><span style="font-family:Courier New">#2 0x080fdefe in readSocket (env=@0x8434df0, socket=21, buffer=0x896afb8 "PLAY rtsp://192.168.1.100:8554/PipeDetectorChainHSI_Gaussian_Probe RTSP/1.0\r\nCSeq: 3\r\nRange: npt=0.000000-\r\nx-prebuffer: maxtime=2.000000\r\nSession: 5\r\nUser-Agent: QTS (qtver=6.5.1;os=Windows NT 5.1Ser"..., bufferSize=10000, fromAddress=@0xb171f18c, timeout=0x0) at GroupsockHelper.cpp:229</span></p>
<p><span style="font-family:Courier New">#3 0x080dfbdf in RTSPServer::RTSPClientSession::incomingRequestHandler1 (this=0x896af90) at RTSPServer.cpp:315</span></p>
<p><span style="font-family:Courier New">#4 0x080dff5d in RTSPServer::RTSPClientSession::incomingRequestHandler (instance=0x896af90) at RTSPServer.cpp:304</span></p>
<p><span style="font-family:Courier New">#5 0x081031bd in BasicTaskScheduler::SingleStep (this=0x8434d38, maxDelayTime=0) at BasicTaskScheduler.cpp:119</span></p>
<p><span style="font-family:Courier New">#6 0x08102767 in BasicTaskScheduler0::doEventLoop (this=0x8434d38, watchVariable=0x0) at BasicTaskScheduler0.cpp:76</span></p>
<p><span style="font-family:Courier New">#7 0x080539dc in LiveStreamer::run (this=0xb4103430) at src/streaming/LiveStreamer.cpp:29</span></p>
<p><span style="font-family:Courier New">#8 0xb7db0b29 in ccxx_exec_handler () from /usr/lib/libccgnu2-1.5.so.0</span></p>
<p><span style="font-family:Courier New">#9 0xb7f36162 in start_thread () from /lib/libpthread.so.0</span></p>
<p><span style="font-family:Courier New">#10 0xb77eefee in clone () from /lib/libc.so.6</span></p>
<p></p>
<p><span style="font-style:italic">Here's the place where the streaming server hang:</span></p>
<p></p>
<p><span style="font-family:Courier New">224 FD_ZERO(&rd_set);</span></p>
<p><span style="font-family:Courier New">225 if (socket < 0) break;</span></p>
<p><span style="font-family:Courier New">226 FD_SET((unsigned) socket, &rd_set);</span></p>
<p><span style="font-family:Courier New">227 const unsigned numFds = socket+1;</span></p>
<p><span style="font-family:Courier New">228</span></p>
<p><span style="font-family:Courier New">*229 result = select(numFds, &rd_set, NULL, NULL, timeout);</span></p>
<p><span style="font-family:Courier New">230 if (timeout != NULL && result == 0) {</span></p>
<p><span style="font-family:Courier New">231 break; // this is OK - timeout occurred</span></p>
<p><span style="font-family:Courier New">232 } else if (result <= 0) {</span></p>
<p><span style="font-family:Courier New">233 #if defined(__WIN32__) || defined(_WIN32)</span></p>
<p></p>
<p>Any help, pointers on a solution or idea are welcome !</p>
<p></p>
<p>Thanks for your help,</p>
<p></p>
<p>Marc-André & Pierre-Luc Loyer</p>
<p>SONIA AUV, Vision Server team</p>
<p>weirdfox@gmail.com, ployer@gmail.com</p>
</body></html>