[vlc-devel] [PATCH 1/2] interrupt: restore interrupted to the killed state
Rémi Denis-Courmont
remi at remlab.net
Thu Oct 24 11:59:51 CEST 2019
I don't agree with the problem statement. What it describes is intended behaviour, not a bug.
Le 24 octobre 2019 12:46:46 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>
>On Thu, Oct 24, 2019, at 11:20, Rémi Denis-Courmont wrote:
>> You effectively reverted to the old broken logic from before the
>interrupt system, and disregarding documented API semantics, wrecking
>many weeks of work from me. Is what you did.
>
>Yes I made a mistake, I should have waited longer and/or ask again for
>review before pushing it.
>I did not realize that my patch would cause such a mess. I'm sorry for
>that.
>
>Is my alternate solution acceptable for you ?
>
>>
>> Le 24 octobre 2019 10:02:17 GMT+03:00, Thomas Guillem
><thomas at gllm.fr> a écrit :
>>>
>>>
>>> On Wed, Oct 23, 2019, at 21:25, Remi Denis-Courmont wrote:
>>>> Le 2019-10-22 17:47, Thomas Guillem a écrit :
>>>>> If a module is interrupted while waiting in a vlc_*_i11e*()
>function,
>>>>> the i11e
>>>>> function will return an error after restoring the interrupted
>state
>>>>> (from
>>>>> vlc_interrupt_finish()). This error will be carefully handled by
>the
>>>>> module
>>>>> that will close itself. If a second module is in the probe list,
>any
>>>>> call to a
>>>>> vlc_*_i11e*() function will act as not interrupted. This cause any
>
>>>>> following
>>>>> modules in the probe list to ignore this interrupted state.
>>>>>
>>>>> To fix this issue, vlc_interrupt_finish() will now restore the
>>>>> interrupted
>>>>> state to the killed state. src/misc/interrupt.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/src/misc/interrupt.c b/src/misc/interrupt.c
>>>>> index d2a04a72b3c..54810892fc1 100644
>>>>> --- a/src/misc/interrupt.c
>>>>> +++ b/src/misc/interrupt.c
>>>>> @@ -151,7 +151,7 @@ static int
>vlc_interrupt_finish(vlc_interrupt_t
>>>>> *ctx)
>>>>> if (ctx->interrupted)
>>>>> {
>>>>> ret = EINTR;
>>>>> - ctx->interrupted = false;
>>>>> + ctx->interrupted = atomic_load(&ctx->killed);
>>>> This looks wrong. The interruption is only there to signal the
>change in
>>>> status. It's not supposed to fire again if the status is not
>changed.
>>>
>>> I sent this patch to open a discussion, I pushed the next day, maybe
>way too early, because vlc for iOS really need it in order to fix
>dialogs that are shown after the media is killed.
>>>
>>> It's OK I can revert.
>>>
>>> But I would like to discuss about the other way to fix the issue
>mentioned by this patch.
>>> The only other fix I see if to abort the module probing (between 2
>probes) if vlc_killed().
>>>
>>> >
>>>>> }
>>>>> vlc_mutex_unlock(&ctx->lock);
>>>>> return ret;
>>>> --
>>>> Rémi Denis-Courmontvlc-devel mailing list
>>>> To unsubscribe or modify your subscription options:
>>>> https://mailman.videolan.org/listinfo/vlc-devel
>>> vlc-devel mailing list
>>> To unsubscribe or modify your subscription options:
>>> https://mailman.videolan.org/listinfo/vlc-devel
>>
>> --
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>excuser ma brièveté.
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20191024/e943e0f5/attachment.html>
More information about the vlc-devel
mailing list