Deal with the SIGCHLD issue in LSF.
lsb_launch tampers with SIGCHLD signal handler. We are forced to reinstall our own signal handler after a call to this function. This commit fixes trac:1356. This commit was SVN r19033. The following Trac tickets were found above: Ticket 1356 --> https://svn.open-mpi.org/trac/ompi/ticket/1356
Этот коммит содержится в:
родитель
7e6e104fc3
Коммит
28dc80b67e
orte
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
||||||
* of Tennessee Research Foundation. All rights
|
* of Tennessee Research Foundation. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
@ -12,6 +12,8 @@
|
|||||||
* Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2008 Institut National de Recherche en Informatique
|
||||||
|
* et Automatique. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -289,6 +291,13 @@ static int plm_lsf_launch_job(orte_job_t *jdata)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* lsb_launch tampers with SIGCHLD.
|
||||||
|
* After the call to lsb_launch, the signal handler for SIGCHLD is NULL.
|
||||||
|
* So, we disable the SIGCHLD handler of libevent for the duration of
|
||||||
|
* the call to lsb_launch
|
||||||
|
*/
|
||||||
|
orte_wait_disable();
|
||||||
|
|
||||||
/* exec the daemon(s). Do NOT wait for lsb_launch to complete as
|
/* exec the daemon(s). Do NOT wait for lsb_launch to complete as
|
||||||
* it only completes when the processes it starts - in this case,
|
* it only completes when the processes it starts - in this case,
|
||||||
* the orteds - complete. We need to go ahead and return so
|
* the orteds - complete. We need to go ahead and return so
|
||||||
@ -299,8 +308,10 @@ static int plm_lsf_launch_job(orte_job_t *jdata)
|
|||||||
ORTE_ERROR_LOG(ORTE_ERR_FAILED_TO_START);
|
ORTE_ERROR_LOG(ORTE_ERR_FAILED_TO_START);
|
||||||
opal_output(0, "lsb_launch failed: %d", rc);
|
opal_output(0, "lsb_launch failed: %d", rc);
|
||||||
rc = ORTE_ERR_FAILED_TO_START;
|
rc = ORTE_ERR_FAILED_TO_START;
|
||||||
|
orte_wait_enable(); /* re-enable our SIGCHLD handler */
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
orte_wait_enable(); /* re-enable our SIGCHLD handler */
|
||||||
|
|
||||||
/* wait for daemons to callback */
|
/* wait for daemons to callback */
|
||||||
if (ORTE_SUCCESS !=
|
if (ORTE_SUCCESS !=
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
||||||
* of Tennessee Research Foundation. All rights
|
* of Tennessee Research Foundation. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2008 Institut National de Recherche en Informatique
|
||||||
|
* et Automatique. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -209,6 +211,19 @@ static void internal_waitpid_callback(int fd, short event, void *arg);
|
|||||||
* Interface Functions
|
* Interface Functions
|
||||||
*
|
*
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
orte_wait_disable(void)
|
||||||
|
{
|
||||||
|
opal_event_del(&handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
orte_wait_enable(void)
|
||||||
|
{
|
||||||
|
opal_event_add(&handler, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
orte_wait_init(void)
|
orte_wait_init(void)
|
||||||
{
|
{
|
||||||
|
@ -2,13 +2,15 @@
|
|||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
* Copyright (c) 2004-2008 The University of Tennessee and The University
|
||||||
* of Tennessee Research Foundation. All rights
|
* of Tennessee Research Foundation. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2008 Institut National de Recherche en Informatique
|
||||||
|
* et Automatique. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -48,6 +50,15 @@ BEGIN_C_DECLS
|
|||||||
/** typedef for callback function used in \c ompi_rte_wait_cb */
|
/** typedef for callback function used in \c ompi_rte_wait_cb */
|
||||||
typedef void (*orte_wait_fn_t)(pid_t wpid, int status, void *data);
|
typedef void (*orte_wait_fn_t)(pid_t wpid, int status, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable / re-Enable SIGCHLD handler
|
||||||
|
*
|
||||||
|
* These functions have to be used after orte_wait_init was called.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ORTE_DECLSPEC void orte_wait_enable(void);
|
||||||
|
ORTE_DECLSPEC void orte_wait_disable(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for process terminiation
|
* Wait for process terminiation
|
||||||
*
|
*
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user