In this (more or less impossible) case, make sure that pthread_cancel()
can't access invalid memory because the thread has exited unexpectedly.

Signed-off-by: Martin Wilck <[email protected]>
---
 libmpathutil/runner.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libmpathutil/runner.c b/libmpathutil/runner.c
index 459af13..c7adc20 100644
--- a/libmpathutil/runner.c
+++ b/libmpathutil/runner.c
@@ -4,6 +4,7 @@
 #include <sched.h>
 #include <time.h>
 #include <pthread.h>
+#include <unistd.h>
 #include <urcu/uatomic.h>
 #include "util.h"
 #include "debug.h"
@@ -44,8 +45,10 @@ static void cleanup_context(struct runner_context **prctx)
        struct runner_context *rctx = *prctx;
        int st;
 
-       if (!rctx)
-               return;
+       if (!rctx) {
+               condlog(0, "ERROR: %s: rctx is NULL", __func__);
+               pause();
+       }
 
        st = uatomic_cmpxchg(&rctx->status, RUNNER_RUNNING, RUNNER_DONE);
        /*
-- 
2.54.0


Reply via email to