Fix race condition in unlock code, as well as a small memory leak.
Somehow they got fixed in the pt2pt implementation, but not the RDMA implementation. Thanks to Guillaume Thouvenin for finding this issue. This commit was SVN r24188.
Этот коммит содержится в:
родитель
c082d05ecb
Коммит
9876e65137
@ -745,12 +745,14 @@ ompi_osc_rdma_passive_unlock_complete(ompi_osc_rdma_module_t *module)
|
||||
OBJ_RELEASE(new_pending);
|
||||
}
|
||||
|
||||
OBJ_DESTRUCT(©_unlock_acks);
|
||||
|
||||
/* if we were really unlocked, see if we have another lock request
|
||||
we can satisfy */
|
||||
OPAL_THREAD_LOCK(&(module->m_lock));
|
||||
new_pending = (ompi_osc_rdma_pending_lock_t*)
|
||||
opal_list_remove_first(&(module->m_locks_pending));
|
||||
if (0 == module->m_lock_status) {
|
||||
new_pending = (ompi_osc_rdma_pending_lock_t*)
|
||||
opal_list_remove_first(&(module->m_locks_pending));
|
||||
if (NULL != new_pending) {
|
||||
ompi_win_append_mode(module->m_win, OMPI_WIN_EXPOSE_EPOCH);
|
||||
/* set lock state and generate a lock request */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user