[vlc-devel] [PATCH 1/2] interrupt: restore interrupted to the killed state
Remi Denis-Courmont
remi at remlab.net
Wed Oct 23 21:25:55 CEST 2019
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.
> }
> vlc_mutex_unlock(&ctx->lock);
> return ret;
--
Rémi Denis-Courmont
More information about the vlc-devel
mailing list