Correct a threaded problem and make sure we only free what was allocated.
This commit was SVN r14803.
Этот коммит содержится в:
родитель
905570a6d2
Коммит
f8f71b9ba0
@ -1187,6 +1187,7 @@ int mca_oob_tcp_register_subscription(orte_jobid_t jobid, char *trigger)
|
|||||||
/* register subscribe callback to receive notification when all processes have registered */
|
/* register subscribe callback to receive notification when all processes have registered */
|
||||||
subscription = OBJ_NEW(mca_oob_tcp_subscription_t);
|
subscription = OBJ_NEW(mca_oob_tcp_subscription_t);
|
||||||
subscription->jobid = jobid;
|
subscription->jobid = jobid;
|
||||||
|
OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
|
||||||
opal_list_append(&mca_oob_tcp_component.tcp_subscriptions, &subscription->item);
|
opal_list_append(&mca_oob_tcp_component.tcp_subscriptions, &subscription->item);
|
||||||
OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
|
OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
|
||||||
|
|
||||||
@ -1269,7 +1270,6 @@ int mca_oob_tcp_register_contact_info(void)
|
|||||||
/* extract payload for storage */
|
/* extract payload for storage */
|
||||||
if (ORTE_SUCCESS != (rc = orte_dss.unload(buffer, (void**)&(bo.bytes), &(bo.size)))) {
|
if (ORTE_SUCCESS != (rc = orte_dss.unload(buffer, (void**)&(bo.bytes), &(bo.size)))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
free(segment);
|
|
||||||
OBJ_RELEASE(buffer);
|
OBJ_RELEASE(buffer);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -1282,7 +1282,6 @@ int mca_oob_tcp_register_contact_info(void)
|
|||||||
values[0]->type = ORTE_BYTE_OBJECT;
|
values[0]->type = ORTE_BYTE_OBJECT;
|
||||||
if (ORTE_SUCCESS != (rc = orte_dss.copy(&(values[0]->data), &bo, ORTE_BYTE_OBJECT))) {
|
if (ORTE_SUCCESS != (rc = orte_dss.copy(&(values[0]->data), &bo, ORTE_BYTE_OBJECT))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
free(segment);
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1295,7 +1294,6 @@ int mca_oob_tcp_register_contact_info(void)
|
|||||||
"returned for selected oob interfaces.\n",
|
"returned for selected oob interfaces.\n",
|
||||||
ORTE_NAME_ARGS(orte_process_info.my_name), tmp);
|
ORTE_NAME_ARGS(orte_process_info.my_name), tmp);
|
||||||
ORTE_ERROR_LOG(ORTE_ERROR);
|
ORTE_ERROR_LOG(ORTE_ERROR);
|
||||||
free(segment);
|
|
||||||
free(tmp);
|
free(tmp);
|
||||||
free(bo.bytes);
|
free(bo.bytes);
|
||||||
return ORTE_ERROR;
|
return ORTE_ERROR;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user