Now that the abort code no longer involves a blocking rml send section, apps that call show_help followed by abort are not printing their error message. So block them in show_help until that message gets out.
This commit was SVN r31595.
Этот коммит содержится в:
родитель
bf82ee2a14
Коммит
2b61f22973
@ -602,6 +602,15 @@ int orte_show_help(const char *filename, const char *topic,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cbfunc(int status, orte_process_name_t* sender,
|
||||||
|
opal_buffer_t* buffer, orte_rml_tag_t tag,
|
||||||
|
void* cbdata)
|
||||||
|
{
|
||||||
|
bool *active = (bool*)cbdata;
|
||||||
|
OBJ_RELEASE(buffer);
|
||||||
|
*active = false;
|
||||||
|
}
|
||||||
|
|
||||||
int orte_show_help_norender(const char *filename, const char *topic,
|
int orte_show_help_norender(const char *filename, const char *topic,
|
||||||
bool want_error_header, const char *output)
|
bool want_error_header, const char *output)
|
||||||
{
|
{
|
||||||
@ -640,6 +649,7 @@ int orte_show_help_norender(const char *filename, const char *topic,
|
|||||||
else {
|
else {
|
||||||
opal_buffer_t *buf;
|
opal_buffer_t *buf;
|
||||||
static bool am_inside = false;
|
static bool am_inside = false;
|
||||||
|
volatile bool active;
|
||||||
|
|
||||||
/* JMS Note that we *may* have a recursion situation here where
|
/* JMS Note that we *may* have a recursion situation here where
|
||||||
the RML could call show_help. Need to think about this
|
the RML could call show_help. Need to think about this
|
||||||
@ -661,13 +671,17 @@ int orte_show_help_norender(const char *filename, const char *topic,
|
|||||||
/* pack the resulting string */
|
/* pack the resulting string */
|
||||||
opal_dss.pack(buf, &output, 1, OPAL_STRING);
|
opal_dss.pack(buf, &output, 1, OPAL_STRING);
|
||||||
/* send it to the HNP */
|
/* send it to the HNP */
|
||||||
|
active = true;
|
||||||
if (ORTE_SUCCESS != (rc = orte_rml.send_buffer_nb(ORTE_PROC_MY_HNP, buf,
|
if (ORTE_SUCCESS != (rc = orte_rml.send_buffer_nb(ORTE_PROC_MY_HNP, buf,
|
||||||
ORTE_RML_TAG_SHOW_HELP,
|
ORTE_RML_TAG_SHOW_HELP,
|
||||||
orte_rml_send_callback, NULL))) {
|
cbfunc, &active))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
OBJ_RELEASE(buf);
|
OBJ_RELEASE(buf);
|
||||||
} else {
|
} else {
|
||||||
rc = ORTE_SUCCESS;
|
rc = ORTE_SUCCESS;
|
||||||
|
if (ORTE_PROC_IS_APP) {
|
||||||
|
ORTE_WAIT_FOR_COMPLETION(active);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
am_inside = false;
|
am_inside = false;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user