diff options
author | Liong Sauw Ming <ming@teluu.com> | 2015-03-03 02:41:27 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2015-03-03 02:41:27 +0000 |
commit | aa1b2aeb3da5323717ae13c281f214bca8a511ce (patch) | |
tree | cf0185cd8a4fa74541605e14b5ad67856440b98c | |
parent | 29f035e34a157bbc553f236430586ea0eca64766 (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.c | 2 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/g7221.c | 3 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/ipp_codecs.c | 3 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/l16.c | 1 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/passthrough.c | 3 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/silk.c | 1 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/speex_codec.c | 2 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/g711.c | 1 | ||||
-rw-r--r-- | pjnath/src/pjturn-srv/allocation.c | 2 |
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); |