summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2015-03-03 02:41:27 +0000
committerLiong Sauw Ming <ming@teluu.com>2015-03-03 02:41:27 +0000
commitaa1b2aeb3da5323717ae13c281f214bca8a511ce (patch)
treecf0185cd8a4fa74541605e14b5ad67856440b98c /pjmedia
parent29f035e34a157bbc553f236430586ea0eca64766 (diff)
Fixed #1818: Fixed destruction of locked mutex (thanks to Denis Poltorak for the Helgrind report)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4987 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c2
-rw-r--r--pjmedia/src/pjmedia-codec/g7221.c3
-rw-r--r--pjmedia/src/pjmedia-codec/ipp_codecs.c3
-rw-r--r--pjmedia/src/pjmedia-codec/l16.c1
-rw-r--r--pjmedia/src/pjmedia-codec/passthrough.c3
-rw-r--r--pjmedia/src/pjmedia-codec/silk.c1
-rw-r--r--pjmedia/src/pjmedia-codec/speex_codec.c2
-rw-r--r--pjmedia/src/pjmedia/g711.c1
8 files changed, 16 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c
index e4c3aea8..3468757d 100644
--- a/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c
@@ -880,7 +880,9 @@ PJ_DEF(pj_status_t) pjmedia_codec_ffmpeg_vid_deinit(void)
&ffmpeg_factory.base);
/* Destroy mutex. */
+ pj_mutex_unlock(ffmpeg_factory.mutex);
pj_mutex_destroy(ffmpeg_factory.mutex);
+ ffmpeg_factory.mutex = NULL;
/* Destroy pool. */
pj_pool_release(ffmpeg_factory.pool);
diff --git a/pjmedia/src/pjmedia-codec/g7221.c b/pjmedia/src/pjmedia-codec/g7221.c
index 9dfb88cb..8fa9efbd 100644
--- a/pjmedia/src/pjmedia-codec/g7221.c
+++ b/pjmedia/src/pjmedia-codec/g7221.c
@@ -469,6 +469,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_g7221_deinit(void)
if (!codec_mgr) {
pj_pool_release(codec_factory.pool);
codec_factory.pool = NULL;
+ pj_mutex_unlock(codec_factory.mutex);
return PJ_EINVALIDOP;
}
@@ -477,7 +478,9 @@ PJ_DEF(pj_status_t) pjmedia_codec_g7221_deinit(void)
&codec_factory.base);
/* Destroy mutex. */
+ pj_mutex_unlock(codec_factory.mutex);
pj_mutex_destroy(codec_factory.mutex);
+ codec_factory.mutex = NULL;
/* Destroy pool. */
pj_pool_release(codec_factory.pool);
diff --git a/pjmedia/src/pjmedia-codec/ipp_codecs.c b/pjmedia/src/pjmedia-codec/ipp_codecs.c
index d7b3344b..ea5789da 100644
--- a/pjmedia/src/pjmedia-codec/ipp_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ipp_codecs.c
@@ -766,6 +766,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_ipp_deinit(void)
if (!codec_mgr) {
pj_pool_release(ipp_factory.pool);
ipp_factory.pool = NULL;
+ pj_mutex_unlock(ipp_factory.mutex);
return PJ_EINVALIDOP;
}
@@ -774,7 +775,9 @@ PJ_DEF(pj_status_t) pjmedia_codec_ipp_deinit(void)
&ipp_factory.base);
/* Destroy mutex. */
+ pj_mutex_unlock(ipp_factory.mutex);
pj_mutex_destroy(ipp_factory.mutex);
+ ipp_factory.mutex = NULL;
/* Destroy pool. */
pj_pool_release(ipp_factory.pool);
diff --git a/pjmedia/src/pjmedia-codec/l16.c b/pjmedia/src/pjmedia-codec/l16.c
index ca8102a9..bd6cb0e0 100644
--- a/pjmedia/src/pjmedia-codec/l16.c
+++ b/pjmedia/src/pjmedia-codec/l16.c
@@ -229,6 +229,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_l16_deinit(void)
l16_factory.endpt = NULL;
/* Destroy mutex. */
+ pj_mutex_unlock(l16_factory.mutex);
pj_mutex_destroy(l16_factory.mutex);
l16_factory.mutex = NULL;
diff --git a/pjmedia/src/pjmedia-codec/passthrough.c b/pjmedia/src/pjmedia-codec/passthrough.c
index 60b44ea1..551a8483 100644
--- a/pjmedia/src/pjmedia-codec/passthrough.c
+++ b/pjmedia/src/pjmedia-codec/passthrough.c
@@ -447,6 +447,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_passthrough_deinit(void)
if (!codec_mgr) {
pj_pool_release(codec_factory.pool);
codec_factory.pool = NULL;
+ pj_mutex_unlock(codec_factory.mutex);
return PJ_EINVALIDOP;
}
@@ -455,7 +456,9 @@ PJ_DEF(pj_status_t) pjmedia_codec_passthrough_deinit(void)
&codec_factory.base);
/* Destroy mutex. */
+ pj_mutex_unlock(codec_factory.mutex);
pj_mutex_destroy(codec_factory.mutex);
+ codec_factory.mutex = NULL;
/* Destroy pool. */
pj_pool_release(codec_factory.pool);
diff --git a/pjmedia/src/pjmedia-codec/silk.c b/pjmedia/src/pjmedia-codec/silk.c
index 3f7bf8f8..9b2281ef 100644
--- a/pjmedia/src/pjmedia-codec/silk.c
+++ b/pjmedia/src/pjmedia-codec/silk.c
@@ -366,6 +366,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_silk_deinit(void)
silk_factory.endpt = NULL;
/* Destroy mutex. */
+ pj_mutex_unlock(silk_factory.mutex);
pj_mutex_destroy(silk_factory.mutex);
silk_factory.mutex = NULL;
diff --git a/pjmedia/src/pjmedia-codec/speex_codec.c b/pjmedia/src/pjmedia-codec/speex_codec.c
index 8a82b0ca..f4540061 100644
--- a/pjmedia/src/pjmedia-codec/speex_codec.c
+++ b/pjmedia/src/pjmedia-codec/speex_codec.c
@@ -387,7 +387,9 @@ PJ_DEF(pj_status_t) pjmedia_codec_speex_deinit(void)
&spx_factory.base);
/* Destroy mutex. */
+ pj_mutex_unlock(spx_factory.mutex);
pj_mutex_destroy(spx_factory.mutex);
+ spx_factory.mutex = NULL;
/* Destroy pool. */
pj_pool_release(spx_factory.pool);
diff --git a/pjmedia/src/pjmedia/g711.c b/pjmedia/src/pjmedia/g711.c
index 98d036dc..5ec2eaf2 100644
--- a/pjmedia/src/pjmedia/g711.c
+++ b/pjmedia/src/pjmedia/g711.c
@@ -221,6 +221,7 @@ PJ_DEF(pj_status_t) pjmedia_codec_g711_deinit(void)
g711_factory.endpt = NULL;
/* Destroy mutex. */
+ pj_mutex_unlock(g711_factory.mutex);
pj_mutex_destroy(g711_factory.mutex);
g711_factory.mutex = NULL;