From 29859b78f1010a42082a7eba705f9f66502a0560 Mon Sep 17 00:00:00 2001 From: Alastair McKinstry Date: Sun, 19 Aug 2018 19:06:13 +0100 Subject: [PATCH] hang-fix Gbp-Pq: Name hang-fix.patch --- orte/orted/pmix/pmix_server_gen.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/orte/orted/pmix/pmix_server_gen.c b/orte/orted/pmix/pmix_server_gen.c index 39850edf..d07177e0 100644 --- a/orte/orted/pmix/pmix_server_gen.c +++ b/orte/orted/pmix/pmix_server_gen.c @@ -859,6 +859,15 @@ void pmix_tool_connected_fn(opal_list_t *info, } +static void lgcbfn(int sd, short args, void *cbdata) +{ + orte_pmix_server_op_caddy_t *cd = (orte_pmix_server_op_caddy_t*)cbdata; + if (NULL != cd->cbfunc) { + cd->cbfunc(cd->status, cd->cbdata); + } + OBJ_RELEASE(cd); +} + void pmix_server_log_fn(opal_process_name_t *requestor, opal_list_t *info, opal_list_t *directives, @@ -907,6 +916,14 @@ void pmix_server_log_fn(opal_process_name_t *requestor, if (NULL != cbfunc) { cbfunc(OPAL_SUCCESS, cbdata); } + + /* we cannot directly execute the callback here + * as it would threadlock - so shift to somewhere + * safe */ + rc = ORTE_SUCCESS; // unused - silence compiler warning + ORTE_PMIX_THREADSHIFT(requestor, NULL, rc, + NULL, NULL, lgcbfn, + cbfunc, cbdata); } int pmix_server_job_ctrl_fn(const opal_process_name_t *requestor, -- 2.30.2