1
1
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2018-07-06 06:38:02 -07:00
родитель 018ca4e2c4
Коммит 17c4cf0db8
8 изменённых файлов: 119 добавлений и 50 удалений

Просмотреть файл

@ -26,7 +26,7 @@ Copyright (c) 2006-2010 Sun Microsystems, Inc. All rights reserved.
Copyright (c) 2006-2010 The University of Houston. All rights reserved.
Copyright (c) 2006-2009 Myricom, Inc. All rights reserved.
Copyright (c) 2007-2008 UT-Battelle, LLC. All rights reserved.
Copyright (c) 2007-2010 IBM Corporation. All rights reserved.
Copyright (c) 2007-2018 IBM Corporation. All rights reserved.
Copyright (c) 1998-2005 Forschungszentrum Juelich, Juelich Supercomputing
Centre, Federal Republic of Germany
Copyright (c) 2005-2008 ZIH, TU Dresden, Federal Republic of Germany
@ -36,7 +36,7 @@ Copyright (c) 2008-2009 Institut National de Recherche en
Informatique. All rights reserved.
Copyright (c) 2007 Lawrence Livermore National Security, LLC.
All rights reserved.
Copyright (c) 2007-2009 Mellanox Technologies. All rights reserved.
Copyright (c) 2007-2018 Mellanox Technologies. All rights reserved.
Copyright (c) 2006-2010 QLogic Corporation. All rights reserved.
Copyright (c) 2008-2010 Oak Ridge National Labs. All rights reserved.
Copyright (c) 2006-2010 Oracle and/or its affiliates. All rights reserved.
@ -45,7 +45,7 @@ Copyright (c) 2010 ARM ltd. All rights reserved.
Copyright (c) 2010-2011 Alex Brick <bricka@ccs.neu.edu>. All rights reserved.
Copyright (c) 2012 The University of Wisconsin-La Crosse. All rights
reserved.
Copyright (c) 2013-2014 Intel, Inc. All rights reserved.
Copyright (c) 2013-2018 Intel, Inc. All rights reserved.
Copyright (c) 2011-2014 NVIDIA Corporation. All rights reserved.
$COPYRIGHT$

Просмотреть файл

@ -60,8 +60,21 @@ current release as well as the "stable" bug fix release branch.
channels, including local/remote syslog and email. Added
attributes to query available channels and to tag and
format output.
- Fix several memory and file descriptor leaks
2.1.2 -- TBD
----------------------
- Added PMIX_VERSION_RELEASE string to pmix_version.h
- Added PMIX_SPAWNED and PMIX_PARENT_ID keys to all procs
started via PMIx_Spawn
- Fixed faulty compares in PMI/PMI2 tests
- Fixed bug in direct modex for data on remote node
- Correctly transfer all cached job info to the client's
shared memory region upon first connection
- Fix potential deadlock in PMIx_server_init in an error case
- Fix uninitialized variable
- Fix several memory and file descriptor leaks
2.1.1 -- 23 Feb 2018

Просмотреть файл

@ -15,7 +15,7 @@ Copyright (c) 2007 Myricom, Inc. All rights reserved.
Copyright (c) 2008 IBM Corporation. All rights reserved.
Copyright (c) 2010 Oak Ridge National Labs. All rights reserved.
Copyright (c) 2011 University of Houston. All rights reserved.
Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
Copyright (c) 2013-2018 Intel, Inc. All rights reserved.
$COPYRIGHT$
Additional copyrights may follow
@ -25,13 +25,14 @@ $HEADER$
===========================================================================
When submitting questions and problems, be sure to include as much
extra information as possible. This web page details all the
information that we request in order to provide assistance:
extra information as possible. The issues template on the
GitHub repo provides directions:
http://pmix.github.io/pmix/community/help/
http://github.com/pmix/pmix/issues
The best way to report bugs, send comments, or ask questions is to
sign up on the PMIx mailing list, which is hosted by GoogleGroups:
open an issue on the repo. Alternatively, you are welcome to sign
up for the developer/user mailing list:
pmix@googlegroups.com
@ -48,7 +49,7 @@ Thanks for your time.
More information is available in the PMIx FAQ:
http://pmix.github.io/pmix/faq/
https://pmix.org/support
We are in early days, so please be patient - info will grow as questions
are addressed.
@ -63,7 +64,7 @@ General notes
- The majority of PMIx's documentation is here in this file, the
included man pages, and on the web site FAQ
(http://pmix.github.io/pmix/faq). This will eventually be
(https://pmix.org/support). This will eventually be
supplemented with cohesive installation and user documentation files.
- Systems that have been tested are:
@ -312,7 +313,7 @@ Common Questions
Many common questions about building and using PMIx are answered
on the FAQ:
http://pmix.github.io/pmix/faq/
https://pmix.org/support
===========================================================================
@ -323,10 +324,10 @@ Found a bug? Got a question? Want to make a suggestion? Want to
contribute to PMIx? Please let us know!
When submitting questions and problems, be sure to include as much
extra information as possible. This web page details all the
information that we request in order to provide assistance:
extra information as possible. Again, the issues template is your
friend in this regard!
http://pmix.github.io/pmix/community/help/
https://github.com/pmix/pmix/issues
Questions and comments should generally be sent to the PMIx mailing
list (pmix@googlegroups.com). Because of spam, only
@ -338,4 +339,4 @@ user's list:
https://groups.google.com/d/forum/pmix
Make today an PMIx day!
Make today a PMIx day!

Просмотреть файл

@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".
repo_rev=git7b5106a
repo_rev=gitffba520
# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
@ -44,7 +44,7 @@ tarball_version=
# The date when this release was created
date="Jun 19, 2018"
date="Jul 01, 2018"
# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library

Просмотреть файл

@ -2885,6 +2885,8 @@ static pmix_status_t dstore_del_nspace(const char* nspace)
ns_map_t *ns_map;
session_t *session_tbl = NULL;
ns_track_elem_t *trk = NULL;
int dstor_track_idx;
size_t session_tbl_idx;
PMIX_OUTPUT_VERBOSE((10, pmix_gds_base_framework.framework_output,
"%s:%d:%s delete nspace `%s`", __FILE__, __LINE__, __func__, nspace));
@ -2893,7 +2895,8 @@ static pmix_status_t dstore_del_nspace(const char* nspace)
rc = PMIX_ERR_NOT_AVAILABLE;
return rc;
}
dstor_track_idx = ns_map_data->track_idx;
session_tbl_idx = ns_map_data->tbl_idx;
size = pmix_value_array_get_size(_ns_map_array);
ns_map = PMIX_VALUE_ARRAY_GET_BASE(_ns_map_array, ns_map_t);
@ -2905,19 +2908,6 @@ static pmix_status_t dstore_del_nspace(const char* nspace)
continue;
}
in_use++;
break;
}
}
if(ns_map_data->track_idx >= 0) {
trk = pmix_value_array_get_item(_ns_track_array, ns_map_data->track_idx);
if((ns_map_data->track_idx + 1) > (int)pmix_value_array_get_size(_ns_track_array)) {
rc = PMIX_ERR_VALUE_OUT_OF_BOUNDS;
PMIX_ERROR_LOG(rc);
goto exit;
}
if (true == trk->in_use) {
PMIX_DESTRUCT(trk);
}
}
@ -2925,10 +2915,22 @@ static pmix_status_t dstore_del_nspace(const char* nspace)
* session record can only be deleted once all references are gone */
if (!in_use) {
session_tbl = PMIX_VALUE_ARRAY_GET_BASE(_session_array, session_t);
PMIX_OUTPUT_VERBOSE((10, pmix_gds_base_framework.framework_output,
"%s:%d:%s delete session for jobuid: %d", __FILE__, __LINE__, __func__, session_tbl[ns_map_data->tbl_idx].jobuid));
_esh_session_release(&session_tbl[ns_map_data->tbl_idx]);
"%s:%d:%s delete session for jobuid: %d",
__FILE__, __LINE__, __func__, session_tbl[session_tbl_idx].jobuid));
size = pmix_value_array_get_size(_ns_track_array);
if (size && (dstor_track_idx >= 0)) {
if((dstor_track_idx + 1) > size) {
rc = PMIX_ERR_VALUE_OUT_OF_BOUNDS;
PMIX_ERROR_LOG(rc);
goto exit;
}
trk = pmix_value_array_get_item(_ns_track_array, dstor_track_idx);
if (true == trk->in_use) {
PMIX_DESTRUCT(trk);
}
}
_esh_session_release(&session_tbl[session_tbl_idx]);
}
exit:
return rc;

Просмотреть файл

@ -1821,10 +1821,10 @@ static void clct_complete(pmix_status_t status,
static void clct(int sd, short args, void *cbdata)
{
pmix_inventory_rollup_t *cd = (pmix_inventory_rollup_t*)cbdata;
pmix_status_t rc;
#if PMIX_HAVE_HWLOC
/* if we don't know our topology, we better get it now */
pmix_status_t rc;
if (NULL == pmix_hwloc_topology) {
if (PMIX_SUCCESS != (rc = pmix_hwloc_get_topology(NULL, 0))) {
PMIX_ERROR_LOG(rc);

Просмотреть файл

@ -27,91 +27,91 @@ noinst_PROGRAMS = simptest simpclient simppub simpdyn simpft simpdmodex \
test_pmix simptool simpdie simplegacy simptimeout \
gwtest gwclient stability quietclient
simptest_SOURCES = \
simptest_SOURCES = $(headers) \
simptest.c
simptest_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simptest_LDADD = \
$(top_builddir)/src/libpmix.la
simpclient_SOURCES = \
simpclient_SOURCES = $(headers) \
simpclient.c
simpclient_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simpclient_LDADD = \
$(top_builddir)/src/libpmix.la
simppub_SOURCES = \
simppub_SOURCES = $(headers) \
simppub.c
simppub_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simppub_LDADD = \
$(top_builddir)/src/libpmix.la
simpdmodex_SOURCES = \
simpdmodex_SOURCES = $(headers) \
simpdmodex.c
simpdmodex_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simpdmodex_LDADD = \
$(top_builddir)/src/libpmix.la
simpft_SOURCES = \
simpft_SOURCES = $(headers) \
simpft.c
simpft_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simpft_LDADD = \
$(top_builddir)/src/libpmix.la
simpdyn_SOURCES = \
simpdyn_SOURCES = $(headers) \
simpdyn.c
simpdyn_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simpdyn_LDADD = \
$(top_builddir)/src/libpmix.la
test_pmix_SOURCES = \
test_pmix_SOURCES = $(headers) \
test_pmix.c
test_pmix_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
test_pmix_LDADD = \
$(top_builddir)/src/libpmix.la
simptool_SOURCES = \
simptool_SOURCES = $(headers) \
simptool.c
simptool_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simptool_LDADD = \
$(top_builddir)/src/libpmix.la
simpdie_SOURCES = \
simpdie_SOURCES = $(headers) \
simpdie.c
simpdie_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simpdie_LDADD = \
$(top_builddir)/src/libpmix.la
simplegacy_SOURCES = \
simplegacy_SOURCES = $(headers) \
simplegacy.c
simplegacy_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simplegacy_LDADD = \
$(top_builddir)/src/libpmix.la
simptimeout_SOURCES = \
simptimeout_SOURCES = $(headers) \
simptimeout.c
simptimeout_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
simptimeout_LDADD = \
$(top_builddir)/src/libpmix.la
gwtest_SOURCES = \
gwtest_SOURCES = $(headers) \
gwtest.c
gwtest_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
gwtest_LDADD = \
$(top_builddir)/src/libpmix.la
gwclient_SOURCES = \
gwclient_SOURCES = $(headers) \
gwclient.c
gwclient_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
gwclient_LDADD = \
$(top_builddir)/src/libpmix.la
stability_SOURCES = \
stability_SOURCES = $(headers) \
stability.c
stability_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
stability_LDADD = \
$(top_builddir)/src/libpmix.la
quietclient_SOURCES = \
quietclient_SOURCES = $(headers) \
quietclient.c
quietclient_LDFLAGS = $(PMIX_PKG_CONFIG_LDFLAGS)
quietclient_LDADD = \

Просмотреть файл

@ -0,0 +1,53 @@
/*
* Copyright (c) 2018 Intel, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <pthread.h>
typedef struct {
pthread_mutex_t mutex;
pthread_cond_t cond;
volatile bool active;
pmix_status_t status;
} mylock_t;
#define DEBUG_CONSTRUCT_LOCK(l) \
do { \
pthread_mutex_init(&(l)->mutex, NULL); \
pthread_cond_init(&(l)->cond, NULL); \
(l)->active = true; \
(l)->status = PMIX_SUCCESS; \
} while(0)
#define DEBUG_DESTRUCT_LOCK(l) \
do { \
pthread_mutex_destroy(&(l)->mutex); \
pthread_cond_destroy(&(l)->cond); \
} while(0)
#define DEBUG_WAIT_THREAD(lck) \
do { \
pthread_mutex_lock(&(lck)->mutex); \
while ((lck)->active) { \
pthread_cond_wait(&(lck)->cond, &(lck)->mutex); \
} \
pthread_mutex_unlock(&(lck)->mutex); \
} while(0)
#define DEBUG_WAKEUP_THREAD(lck) \
do { \
pthread_mutex_lock(&(lck)->mutex); \
(lck)->active = false; \
pthread_cond_broadcast(&(lck)->cond); \
pthread_mutex_unlock(&(lck)->mutex); \
} while(0)