[vlc-devel] [PATCH 1/2] interrupt: restore interrupted to the killed state

Thomas Guillem thomas at gllm.fr
Tue Oct 22 16:47:18 CEST 2019


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);
     }
     vlc_mutex_unlock(&ctx->lock);
     return ret;
-- 
2.20.1



More information about the vlc-devel mailing list