This is similar to gotcha #1. So I will go into less detail. If the on_call_state() handler which gets hangup notifications calls pjsua_recorder_destroy(). The box can stop communicating after that for the following reason. 1) pjsua_recorder_destroy() locks pjsua mutex. 2) pjsua_recorder_destroy() locals conf mutex indirectly by calling pjsua_conf_remove_port(). But if conf mutex is locked in port audio clock thread get_frame() at the point of the call. You will block waiting for conf mutex and other threads will never get pjsua mutex. Work around: don't call pjsua_recorder_destroy() in on_call_state() signal the application thread to wait up and do it in the application thread. David Clark -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090514/fe01a035/attachment.html>