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
