Hello, Ross Finlayson and LIVE555 support! First of all, thanks for such a great library. I am developing an application for streaming cv::Mat over RTSP
I have a problem using Medium::close() in my destructor when deleting an RTSPServer object after I have already deleted ServerMediaSession* objects vector (of course, using Medium::close() too). The app crashes with SIGSEGV error. On the other side, destroying RTSPServer object will succeed if I put it right before destroying ServerMediaSession* objects vector, but this time Medium::close() for ServerMediaSession* will crash my app again with SIGSEGV error. What's more interesting: in this case I am still able to use ServerMediaSession* object even after destroying the RTSPServer using Medium::close(), for example, calling the mSms[i] object by method like this: mSms[0]->deleteAllSubsessions() will not cause the crash. It means that mSms[0] object still exists after Medium::close(mRTSPServer), but Medium::close(mSms[0]) is not able to destroy it properly, without SIGSEGV errors. It appears that I have to use Medium::close() either RTSPServer object or a ServerMediaSession* objects vector. Why? Is this a bug or am I doing something wrong? Here is my destructor code: ------------------------------------------------------------------------------------------------------------------------------- RTSPServerH264::~RTSPServerH264() { LOG(INFO) << "RTSP server close: destroying objects"; if (mSms.size() > 0) { LOG(INFO) << "destroying: Server Media Subsession vector"; for (ServerMediaSession* s : mSms) { s->deleteAllSubsessions(); Medium::close(s); } mSms.clear(); mLiveSubsession.clear(); } if (mRTSPServer) { LOG(INFO) << "destroying: RTSPServer"; // BUG: Destroying RTSPServer object crashes the whole application! Medium::close(mRTSPServer); } if (mUsageEnvironment) { LOG(INFO) << "destroying: Usage Environment"; mUsageEnvironment->reclaim(); } if (mTaskScheduler) { LOG(INFO) << "destroying: Task Scheduler"; delete mTaskScheduler; } } ------------------------------------------------------------------------------------------------------------------------------- Earlier, I published this issue on stackoverflow but wasn't lucky to get any response: http://stackoverflow.com/questions/31006804/live555-rtspserver-object-destroyed-improperly-or-the-library-bug I've read about the RTSPServer bug from the changelog.txt before, that's why I've tested using the latest version of LIVE555 (on Ubuntu 14.04). ------------------------------------------------------------------------------------------------------------------------------- 2015.05.12: - Updated the previous revision to change the order in which fields are deleted in the "RTSPServer" destructor, to avoid a possible crash if "RTSPServer" objects are deleted. (Thanks to ChaSeop Im for noting the problem.) ------------------------------------------------------------------------------------------------------------------------------- Best Regards, Alexander Dunaevsky _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel