Do cleanup in ompi_mtl_portals_del_procs() rather than
ompi_mtl_portals_finalize(). Previous code was cleaning up Portals resources that hadn't been allocated, which caused valid handles used elsewhere to be freed, which broke cnos_barrier() for the Portals btl. This commit was SVN r16801.
Этот коммит содержится в:
родитель
8c0060701c
Коммит
0138a2ee17
@ -271,22 +271,9 @@ ompi_mtl_portals_del_procs(struct mca_mtl_base_module_t *mtl,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return OMPI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
ompi_mtl_portals_finalize(struct mca_mtl_base_module_t *mtl)
|
|
||||||
{
|
|
||||||
assert(mtl == &ompi_mtl_portals.base);
|
|
||||||
|
|
||||||
ompi_mtl_portals_recv_short_disable((mca_mtl_portals_module_t *) mtl);
|
ompi_mtl_portals_recv_short_disable((mca_mtl_portals_module_t *) mtl);
|
||||||
|
|
||||||
/* Don't try to wait for things to finish if we've never initialized */
|
ompi_mtl_portals_short_cleanup();
|
||||||
if (PTL_INVALID_HANDLE != ompi_mtl_portals.ptl_ni_h) {
|
|
||||||
opal_progress_unregister(ompi_mtl_portals_progress);
|
|
||||||
while (0 != ompi_mtl_portals_progress()) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)PtlMDUnlink(ompi_mtl_portals.ptl_zero_md_h);
|
(void)PtlMDUnlink(ompi_mtl_portals.ptl_zero_md_h);
|
||||||
|
|
||||||
@ -306,7 +293,20 @@ ompi_mtl_portals_finalize(struct mca_mtl_base_module_t *mtl)
|
|||||||
|
|
||||||
(void)PtlMEUnlink(ompi_mtl_portals.ptl_read_catchall_me_h);
|
(void)PtlMEUnlink(ompi_mtl_portals.ptl_read_catchall_me_h);
|
||||||
|
|
||||||
ompi_mtl_portals_short_cleanup();
|
return OMPI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
ompi_mtl_portals_finalize(struct mca_mtl_base_module_t *mtl)
|
||||||
|
{
|
||||||
|
assert(mtl == &ompi_mtl_portals.base);
|
||||||
|
|
||||||
|
/* Don't try to wait for things to finish if we've never initialized */
|
||||||
|
if (PTL_INVALID_HANDLE != ompi_mtl_portals.ptl_ni_h) {
|
||||||
|
opal_progress_unregister(ompi_mtl_portals_progress);
|
||||||
|
while (0 != ompi_mtl_portals_progress()) { }
|
||||||
|
}
|
||||||
|
|
||||||
ompi_common_portals_ni_finalize();
|
ompi_common_portals_ni_finalize();
|
||||||
ompi_common_portals_finalize();
|
ompi_common_portals_finalize();
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user