On Tue, May 11, 2010 at 4:42 PM, Jeremy Noring <jnor...@logitech.com> wrote:
> On Fri, May 7, 2010 at 9:28 AM, Jeremy Noring <jnor...@logitech.com>wrote: > >> On Fri, Apr 30, 2010 at 4:19 PM, Ross Finlayson <finlay...@live555.com>wrote: >> >>> >>> It would be nice to find a simple, repeatable sequence of client >>> operations that cause the crash. E.g., does crash ever happen if there are >>> two complete "DESCRIBE, SETUP, SETUP, PLAY, TEARDOWN" sequences in order >>> (i.e., not overlapping), or does it occur only when two such sequences >>> overlap? Once you've found a repeatable situation that causes the crash, >>> then you could also test with RTP-over-UDP, and with "reuseFirstSource" set >>> to False. >> >> Okay, I've now managed to reproduce this with openRTSP and testOnDemandRTSPServer (which is what our RTSP server is modeled after). To reproduce it, you need to: 1. Have your RTSP server deliver a media session with multiple subsessions. (i.e. simply trying to reproduce with mp3AudioTest will not work; you have to have a session with audio _and_ video, for example). I simply combined the .wav and .mp3 sessions into one: { char const* streamName = "mp3AudioTest"; char const* inputFileName = "test.mp3"; ServerMediaSession* sms = ServerMediaSession::createNew(*env, streamName, streamName, descriptionString); Boolean useADUs = False; Interleaving* interleaving = NULL; #ifdef STREAM_USING_ADUS useADUs = True; #ifdef INTERLEAVE_ADUS unsigned char interleaveCycle[] = {0,2,1,3}; // or choose your own... unsigned const interleaveCycleSize = (sizeof interleaveCycle)/(sizeof (unsigned char)); interleaving = new Interleaving(interleaveCycleSize, interleaveCycle); #endif #endif sms->addSubsession(MP3AudioFileServerMediaSubsession ::createNew(*env, inputFileName, reuseFirstSource, useADUs, interleaving)); // To convert 16-bit PCM data to 8-bit u-law, prior to streaming, // change the following to True: inputFileName = "test.wav"; Boolean convertToULaw = False; sms->addSubsession(WAVAudioFileServerMediaSubsession ::createNew(*env, inputFileName, reuseFirstSource, convertToULaw)); rtspServer->addServerMediaSession(sms); announceStream(rtspServer, sms, streamName, inputFileName); } 2. Set reuseFirstSource to True 3. Run multiple openRTSP instances to repeatedly hit the RTSP server streaming with TCP. I use "openRTSP -t -d 1 url", and have a small program that calls that repeatedly. Next, I'm going to isolate if this is regression in the codebase, or if it's something that was a problem before the recent RTP-over-TCP changes.
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel