[vlc-devel] [PATCH] HLS: remove some useless mutex locks

Jean-Paul Saman jpsaman at videolan.org
Tue Feb 7 16:07:16 CET 2012


On Tue, Feb 7, 2012 at 3:26 PM, Hugo Beauzée-Luyssen <beauze.h at gmail.com> wrote:
> 2012/2/7 Frédéric Yhuel <fyhuel at viotech.net>:
>> ---
>>  modules/stream_filter/httplive.c |    4 ----
>>  1 files changed, 0 insertions(+), 4 deletions(-)
>>
>> diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
>> index c03061b..9afd5c0 100644
>> --- a/modules/stream_filter/httplive.c
>> +++ b/modules/stream_filter/httplive.c
>> @@ -2070,9 +2070,7 @@ static void Close(vlc_object_t *p_this)
>>     assert(p_sys->hls_stream);
>>
>>     /* */
>> -    vlc_mutex_lock(&p_sys->download.lock_wait);
>>     vlc_cond_signal(&p_sys->download.wait);
>> -    vlc_mutex_unlock(&p_sys->download.lock_wait);
>>
>
> This mutex isn't useless, if you don't hold it before calling
> vlc_cond_signal there is no way of being sure the thread is actually
> waiting.
> If the mutex is held by the download thread, it's likely to enter the
> wait condition, thus the call to vlc_thread_join would stall.
> Moreover, I think there are some slight chances of deadlock when
> calling Close(), and some non thread-safe access to variables such as
> as p_sys.(download|playback).segment...
> Anyway, I'm pretty sure this mutex is not useless.
>
>>     /* */
>>     if (p_sys->b_live)
>> @@ -2223,9 +2221,7 @@ static ssize_t hls_Read(stream_t *s, uint8_t *p_read, unsigned int i_read)
>>             vlc_mutex_unlock(&segment->lock);
>>
>>             /* signal download thread */
>> -            vlc_mutex_lock(&p_sys->download.lock_wait);
>>             vlc_cond_signal(&p_sys->download.wait);
>> -            vlc_mutex_unlock(&p_sys->download.lock_wait);
>
> The same applies here, if the hls_Thread is about to enter
> vlc_cond_wait (ie. having the download.lock held) if you don't acquire
> the mutex first in the main thread, you might signal the thread before
> it enters the vlc_cond_wait, thus leading to unexpected behavior.
>
>>             continue;
>>         }
>>
>> --
>> 1.7.5.4
>>
>
> Please note that I am no threading expert, and therefore I'd love to
> have a second opinion.
>
> Best regards,
>
> --
> Hugo Beauzée-Luyssen

Hugo,

You are correct.

Kind regards

Jean-Paul Saman
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list