Skip to content

Commit 0862c40

Browse files
committed
coll/base: cleanup ompi_coll_base_nbc_request_t elements
Since ompi_coll_base_nbc_request_t is to be used in an opal_free_list_t, it must be returned into a "clean" state. So cleanup some data in the callback completion subroutines. This fixes a regression introduced in 0fe756d Signed-off-by: Gilles Gouaillardet <[email protected]>
1 parent f8eef0f commit 0862c40

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

ompi/mca/coll/base/coll_base_util.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,11 @@ int ompi_rounddown(int num, int factor)
108108
static void release_objs_callback(struct ompi_coll_base_nbc_request_t *request) {
109109
if (NULL != request->data.objs.objs[0]) {
110110
OBJ_RELEASE(request->data.objs.objs[0]);
111+
request->data.objs.objs[0] = NULL;
111112
}
112113
if (NULL != request->data.objs.objs[1]) {
113114
OBJ_RELEASE(request->data.objs.objs[1]);
115+
request->data.objs.objs[1] = NULL;
114116
}
115117
}
116118

@@ -207,15 +209,21 @@ static void release_vecs_callback(ompi_coll_base_nbc_request_t *request) {
207209
} else {
208210
scount = rcount = OMPI_COMM_IS_INTER(comm)?ompi_comm_remote_size(comm):ompi_comm_size(comm);
209211
}
210-
for (int i=0; i<scount; i++) {
211-
if (NULL != request->data.vecs.stypes && NULL != request->data.vecs.stypes[i]) {
212-
OMPI_DATATYPE_RELEASE(request->data.vecs.stypes[i]);
212+
if (NULL != request->data.vecs.stypes) {
213+
for (int i=0; i<scount; i++) {
214+
if (NULL != request->data.vecs.stypes[i]) {
215+
OMPI_DATATYPE_RELEASE(request->data.vecs.stypes[i]);
216+
}
213217
}
218+
request->data.vecs.stypes = NULL;
214219
}
215-
for (int i=0; i<rcount; i++) {
216-
if (NULL != request->data.vecs.rtypes && NULL != request->data.vecs.rtypes[i]) {
217-
OMPI_DATATYPE_RELEASE(request->data.vecs.rtypes[i]);
220+
if (NULL != request->data.vecs.rtypes) {
221+
for (int i=0; i<rcount; i++) {
222+
if (NULL != request->data.vecs.rtypes[i]) {
223+
OMPI_DATATYPE_RELEASE(request->data.vecs.rtypes[i]);
224+
}
218225
}
226+
request->data.vecs.rtypes = NULL;
219227
}
220228
}
221229

0 commit comments

Comments
 (0)