From 913667c3328bae82d73240dad797d530c4412578 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Tue, 17 Oct 2017 09:15:02 -0500 Subject: [PATCH] sharedfp/sm: close the named semaphore in case a named semaphore is used, it is necessary to close the semaphore to remove all sm segments. sem_unlink just removes the name references once all proceeses have closed the sem. Fixes issue: #4336 Signed-off-by: Edgar Gabriel sharedfp/sm: unlink only needs to be called by one process Signed-off-by: Edgar Gabriel --- ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c b/ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c index 2d205bd23be..2190c061c8a 100644 --- a/ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c +++ b/ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c @@ -235,6 +235,12 @@ int mca_sharedfp_sm_file_open (struct ompi_communicator_t *comm, comm->c_coll->coll_barrier (comm, comm->c_coll->coll_barrier_module ); +#if defined(HAVE_SEM_OPEN) + if ( 0 == rank ) { + sem_unlink ( sm_data->sem_name); + } +#endif + return err; } @@ -267,7 +273,7 @@ int mca_sharedfp_sm_file_close (mca_io_ompio_file_t *fh) if (file_data->sm_offset_ptr) { /* destroy semaphore */ #if defined(HAVE_SEM_OPEN) - sem_unlink (file_data->sem_name); + sem_close ( file_data->mutex); free (file_data->sem_name); #elif defined(HAVE_SEM_INIT) sem_destroy(&file_data->sm_offset_ptr->mutex);