Hello,<div>I think I have found a problem with the new version of the media clock (used by the master port)</div><div><br></div><div>The problem:</div><div><br></div><div>Part1:</div><div>* in pjmedia_clock_create2( ... ) a memory pool </div>
<div>   is passed as an argument.</div><div>* from this pool's factory an other pool is created</div><div>  (let's call it new_pool for now)</div><div>* from new_pool the memory for the pjmedia_clock "instance"</div>
<div>  is "allocated" and a pointer to new_pool is stored to the instance.</div><div><br></div><div>so far everything looks good.</div><div>Part2:</div><div><br></div><div>in pjmedia_clock_start the clock thread is created from </div>
<div>new_pool (and started)</div><div><br></div><div><br></div><div>Part3: this is the point where the error occures</div><div><br></div><div>in pjmedia_clock_stop the quitting flag is set to true</div><div>and the thread is joined.</div>
<div><br></div><div>the problem:</div><div>   * after joining pj_thread_destroy should be called to destroy the thread's mutex.</div><div>   * the memory allocated from new_pool is lost now because if you restart the </div>
<div>      clock (by calling pjmedia_clock_start) again new memory is "allocated" from</div><div>      new_pool --> new_pool is growing on each restart.</div><div><br></div><div><div>If the MasterPort is enabled and disabled very often (don't know if this happens that often) this behaviour can lead to<br>
</div><div>high memory consumption)</div></div><div><br></div><div>possible solution:</div><div><br></div><div>1)in pjmedia_clock_create2 use the pool passed as an argument</div><div>   to allocate memory for the pjmedia_clock instance</div>
<div>   but also create new_pool and store the pointer (new_pool) to the</div><div>   pjmedia_clock instance.</div><div>2) in pjmedia_clock_start create the thread from new_pool</div><div>3) in pjmedia_clock_stop:</div><div>
     join the thread (like it is done now)</div><div>     but after that call pj_thread_destroy</div><div>     and pj_pool_reset(new_pool)</div><div><br></div><div>     ==> so the thread's mutex is destroyed + new_pool's memory usage is not growing (when restarting) !!!</div>
<div><br></div><div>I hope this was understandable.</div><div>If you have any questions,</div><div>I will try to answer them.</div><div><br></div><div>mike</div><div>  </div><div><br></div><div><br></div><div><br></div><div>
<br></div>