1
1
openmpi/opal/mca/event/base/event_base_frame.c
Ralph Castain 7b4afe7efe Revert r31765 as it causes segfaults in all orte tools. We aren't getting all the events off of the event base in those tools prior to opal calling event_base_free, and that means there are stale memory references that libevent is trying to release.
Either we need to ensure that all events are deleted (which may prove difficult), or find another way to release the base memory.

This commit was SVN r31775.

The following SVN revision numbers were found above:
  r31765 --> open-mpi/ompi@75fb6dbba9
2014-05-15 14:02:16 +00:00

98 строки
2.5 KiB
C

/*
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2014 Intel, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#include "opal_config.h"
#include "opal/constants.h"
#include "opal/util/output.h"
#include "opal/mca/mca.h"
#include "opal/mca/base/base.h"
#include "opal/mca/event/event.h"
#include "opal/mca/event/base/base.h"
/*
* The following file was created by configure. It contains extern
* statements and the definition of an array of pointers to each
* component's public mca_base_component_t struct.
*/
#include "opal/mca/event/base/static-components.h"
/**
* Initialize the event MCA framework
*
* @retval OPAL_SUCCESS Upon success
* @retval OPAL_ERROR Upon failure
*
* This must be the first function invoked in the event MCA
* framework. It initializes the event MCA framework, finds
* and opens event components, etc.
*
* This function is invoked during opal_init().
*
* This function fills in the internal global variable
* opal_event_base_components_opened, which is a list of all
* event components that were successfully opened. This
* variable should \em only be used by other event base
* functions -- it is not considered a public interface member --
* and is only mentioned here for completeness.
*/
static int opal_event_base_open(mca_base_open_flag_t flags);
static int opal_event_base_close(void);
/* Use default register and close function */
MCA_BASE_FRAMEWORK_DECLARE(opal, event, NULL, NULL, opal_event_base_open,
opal_event_base_close, mca_event_base_static_components,
0);
static int opal_event_base_close(void)
{
/* cleanup components even though they are statically opened */
return mca_base_framework_components_close (&opal_event_base_framework,
NULL);
}
/*
* Globals
*/
opal_event_base_t *opal_event_base=NULL;
static int opal_event_base_open(mca_base_open_flag_t flags)
{
int rc = OPAL_SUCCESS;
/* Silence compiler warning */
(void) flags;
/* no need to open the components since we only use one */
/* init the lib */
if (OPAL_SUCCESS != (rc = opal_event_init())) {
return rc;
}
/* Declare our intent to use threads */
opal_event_use_threads();
/* get our event base */
if (NULL == (opal_event_base = opal_event_base_create())) {
return OPAL_ERROR;
}
/* set the number of priorities */
if (0 < OPAL_EVENT_NUM_PRI) {
opal_event_base_priority_init(opal_event_base, OPAL_EVENT_NUM_PRI);
}
return rc;
}