Fetch the repository succeeded.
函数调用过程存在对同一个mutex进行加锁两次,会导致程序崩溃或未定义行为
int32_t Recorder::RecorderImpl::Stop(bool block)
{
std::lock_guard<std::mutex> lock(mutex_); // 问题代码(对mutex_再次已经加锁)
if (status_ != RECORDING &&
status_ != PAUSED) {
MEDIA_ERR_LOG(" Stop ILLEGAL_STATE status:%u", status_);
return ERR_ILLEGAL_STATE;
}
int32_t Recorder::RecorderImpl::Release()
{
std::lock_guard<std::mutex> lock(mutex_); // 对mutex_已经加锁
int32_t ret;
if ((ret = InitCheck()) != SUCCESS) {
MEDIA_ERR_LOG("Release InitCheck err");
return ret;
}
if (status_ == RECORDING ||
status_ == PAUSED) {
if ((ret = Stop(false)) != SUCCESS) { // 问题代码
MEDIA_ERR_LOG("Release Stop err");
return ret;
}
}
问题原始发现人@jiangyubo_zju