From f8ffec926ee9036b1a89cec9463965c4340d9864 Mon Sep 17 00:00:00 2001 From: George Bosilca Date: Tue, 27 Jun 2017 18:35:24 +0200 Subject: [PATCH] Protect the monitoring infrastructure initialization. --- ompi/mca/coll/monitoring/coll_monitoring_component.c | 3 +-- ompi/mca/common/monitoring/common_monitoring.c | 7 ++++--- ompi/mca/common/monitoring/common_monitoring.h | 2 +- ompi/mca/osc/monitoring/osc_monitoring_component.c | 3 +-- ompi/mca/pml/monitoring/pml_monitoring_component.c | 4 ++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ompi/mca/coll/monitoring/coll_monitoring_component.c b/ompi/mca/coll/monitoring/coll_monitoring_component.c index 2e61a1c87e..8fe8049934 100644 --- a/ompi/mca/coll/monitoring/coll_monitoring_component.c +++ b/ompi/mca/coll/monitoring/coll_monitoring_component.c @@ -106,8 +106,7 @@ static int mca_coll_monitoring_component_init(bool enable_progress_threads, bool enable_mpi_threads) { OPAL_MONITORING_PRINT_INFO("coll_module_init"); - mca_common_monitoring_init(); - return OMPI_SUCCESS; + return mca_common_monitoring_init(); } static int mca_coll_monitoring_component_register(void) diff --git a/ompi/mca/common/monitoring/common_monitoring.c b/ompi/mca/common/monitoring/common_monitoring.c index 68d8c8ab5b..8998d82c53 100644 --- a/ompi/mca/common/monitoring/common_monitoring.c +++ b/ompi/mca/common/monitoring/common_monitoring.c @@ -203,10 +203,10 @@ static int mca_common_monitoring_comm_size_notify(mca_base_pvar_t *pvar, return OMPI_ERROR; } -void mca_common_monitoring_init( void ) +int mca_common_monitoring_init( void ) { - if( mca_common_monitoring_enabled && - 1 < opal_atomic_add_32(&mca_common_monitoring_hold, 1) ) return; /* Already initialized */ + if( !mca_common_monitoring_enabled ) return OMPI_ERROR; + if( 1 < opal_atomic_add_32(&mca_common_monitoring_hold, 1) ) return OMPI_SUCCESS; /* Already initialized */ char hostname[OPAL_MAXHOSTNAMELEN] = "NA"; /* Initialize constant */ @@ -220,6 +220,7 @@ void mca_common_monitoring_init( void ) /* Initialize proc translation hashtable */ common_monitoring_translation_ht = OBJ_NEW(opal_hash_table_t); opal_hash_table_init(common_monitoring_translation_ht, 2048); + return OMPI_SUCCESS; } void mca_common_monitoring_finalize( void ) diff --git a/ompi/mca/common/monitoring/common_monitoring.h b/ompi/mca/common/monitoring/common_monitoring.h index 6cde893cf1..5c4cef00d3 100644 --- a/ompi/mca/common/monitoring/common_monitoring.h +++ b/ompi/mca/common/monitoring/common_monitoring.h @@ -46,7 +46,7 @@ extern int mca_common_monitoring_current_state; extern opal_hash_table_t *common_monitoring_translation_ht; OMPI_DECLSPEC void mca_common_monitoring_register(void*pml_monitoring_component); -OMPI_DECLSPEC void mca_common_monitoring_init( void ); +OMPI_DECLSPEC int mca_common_monitoring_init( void ); OMPI_DECLSPEC void mca_common_monitoring_finalize( void ); OMPI_DECLSPEC int mca_common_monitoring_add_procs(struct ompi_proc_t **procs, size_t nprocs); diff --git a/ompi/mca/osc/monitoring/osc_monitoring_component.c b/ompi/mca/osc/monitoring/osc_monitoring_component.c index 1641b93bb9..611360bf81 100644 --- a/ompi/mca/osc/monitoring/osc_monitoring_component.c +++ b/ompi/mca/osc/monitoring/osc_monitoring_component.c @@ -46,8 +46,7 @@ static int mca_osc_monitoring_component_init(bool enable_progress_threads, bool enable_mpi_threads) { OPAL_MONITORING_PRINT_INFO("osc_component_init"); - mca_common_monitoring_init(); - return OMPI_SUCCESS; + return mca_common_monitoring_init(); } static int mca_osc_monitoring_component_finish(void) diff --git a/ompi/mca/pml/monitoring/pml_monitoring_component.c b/ompi/mca/pml/monitoring/pml_monitoring_component.c index 7c8bc6c1dd..fed3bd6955 100644 --- a/ompi/mca/pml/monitoring/pml_monitoring_component.c +++ b/ompi/mca/pml/monitoring/pml_monitoring_component.c @@ -144,8 +144,8 @@ mca_pml_monitoring_component_init(int* priority, bool enable_progress_threads, bool enable_mpi_threads) { - mca_common_monitoring_init(); - if( mca_common_monitoring_enabled ) { + if( (OMPI_SUCCESS == mca_common_monitoring_init()) && + mca_common_monitoring_enabled ) { *priority = 0; /* I'm up but don't select me */ return &mca_pml_monitoring_module; }