summaryrefslogtreecommitdiff
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
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
-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
-rw-r--r--pjnath/src/pjturn-srv/allocation.c2
9 files changed, 17 insertions, 1 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;
diff --git a/pjnath/src/pjturn-srv/allocation.c b/pjnath/src/pjturn-srv/allocation.c
index 5310ea5f..6c9c9ce1 100644
--- a/pjnath/src/pjturn-srv/allocation.c
+++ b/pjnath/src/pjturn-srv/allocation.c
@@ -1282,7 +1282,7 @@ static pj_status_t stun_on_rx_request(pj_stun_session *sess,
p2->channel = PJ_STUN_GET_CH_NB(ch_attr->value);
/* Register to hash table */
- pj_assert(sizeof(p2->channel==2));
+ pj_assert(sizeof(p2->channel)==2);
pj_hash_set(alloc->pool, alloc->ch_table, &p2->channel,
sizeof(p2->channel), 0, p2);