<div dir="ltr"><div><div><div>Hi,<br><br></div>Found a memory leak in class ProxyServerMediaSession. This leak grows with more number of cameras registered to live555ProxyServer.<br><br></div>class PresentationTimeSessionNormalizer is derived class of Medium. So that whenever object of class PresentationTimeSessionNormalizer is created, it creates its new entry in HashTable. <br>But when ~ProxyServerMediaSession() is called fPresentationTimeSessionNormalizer object is freed using delete operator instead of Medium::close(); Because of this its entry is not removed from HashTable and because HashTable is not empty, unable to reclaim UsageEnvironment at end.<br></div><div><div><br></div><div>If live555ProxyServer has only one UsageEnvironment object, then its not an issue, but if there are multiple UsageEnvironment objects (created when new stream registered and reclaimed when stream disconnected), then it generates memory leak per camera stream. This memory leak were causing a crash in our live555ProxyServer after too many registering and de-regestering camera streams.<br></div><div><br></div><div>Here is valgrind result (<a href="http://www.live555.com/liveMedia/public/live.2015.07.23.tar.gz">live.2015.07.23.tar.gz</a>)<br></div><div>1. ProxyServerMediaSession.cpp:134  : delete fPresentationTimeSessionNormalizer;<br>    ==13119== LEAK SUMMARY:<br>    ==13119==    definitely lost: 1,040 bytes in 1 blocks<br>    ==13119==    indirectly lost: 171 bytes in 5 blocks<br><br></div><div>(FIX)<br></div><div>2. ProxyServerMediaSession.cpp:134  : Medium::close(fPresentationTimeSessionNormalizer);</div><div>    ==12990== LEAK SUMMARY:<br>    ==12990==    definitely lost: 0 bytes in 0 blocks<br>    ==12990==    indirectly lost: 0 bytes in 0 blocks<br></div><div><div><br></div><div>Please check whether this is a valid fix or not. <br>I hope this fix may help for live555 stability.<br clear="all"></div><div><div><div><div><div dir="ltr">--<br>Thanks & Regards,<br>DnyaneshG.</div></div></div>
</div></div></div></div></div>