[vlc-devel] [PATCH 3/6] demux: adaptive: fix cancellation during refresh playlist

Zhao Zhili quinkblack at foxmail.com
Wed Sep 20 13:32:36 CEST 2017


Hi Hugo,


On 2017年09月20日 17:10, Hugo Beauzée-Luyssen wrote:
> On Wed, Sep 20, 2017, at 05:49 AM, Zhao Zhili wrote:
>> This patch fixed a crash due to assert failure since mutex is not
>> unlocked before vlc_mutex_destroy().
>> ---
>>    modules/demux/adaptive/PlaylistManager.cpp | 2 ++
>>    1 file changed, 2 insertions(+)
>>
>> diff --git a/modules/demux/adaptive/PlaylistManager.cpp
>> b/modules/demux/adaptive/PlaylistManager.cpp
>> index 3ee5014..706ece0 100644
>> --- a/modules/demux/adaptive/PlaylistManager.cpp
>> +++ b/modules/demux/adaptive/PlaylistManager.cpp
>> @@ -633,10 +633,12 @@ void PlaylistManager::Run()
>>
>>            if(needsUpdate())
>>            {
>> +            int canc = vlc_savecancel();
> This implies that the below functions are cancellation points, and
> therefor a more correct fix (in my opinion) would be to move the call
> the vlc_cleanup_pop right before the mutex gets unlocked, instead of
> disabling cancellation.

Crash due to unlocked mutex is what I encountered, but I think it's not the
only risk. A cleanup handler doesn't solve the issue completely. The thread
should exit by plan.

>>                if(updatePlaylist())
>>                    scheduleNextUpdate();
>>                else
>>                    failedupdates++;
>> +            vlc_restorecancel(canc);
>>            }
>>
>>            vlc_mutex_lock(&demux.lock);
>> -- 
>> 2.7.4
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>> Email had 1 attachment:
>> + 0003-demux-adaptive-fix-cancellation-during-refresh-playl.patch
>>    1k (text/x-patch)
>



More information about the vlc-devel mailing list