Commit 2efebedc authored by Xin Zhao's avatar Xin Zhao
Browse files

Bug-fix: free lock entry queue when it was allocated.



Originally we allocate the lock entry queue in Win_create/allocate
(if no_locks is not set), and free the queue in Win_free (if no_locks
is not set). This is not correct because no_locks may be set after
Win_create/allocate and before Win_free. In this patch, we free
the queue in Win_free if the queue was allocated in Win_create/allocate.

Thanks to Lisandro Dalcin [dalcinl@gmail.com] for reporting this bug.

Fix #2273
Signed-off-by: Pavan Balaji's avatarPavan Balaji <balaji@anl.gov>
parent 9d149761
......@@ -241,7 +241,7 @@ int MPIDI_Win_free(MPID_Win ** win_ptr)
MPIU_Free((*win_ptr)->op_pool_start);
MPIU_Free((*win_ptr)->target_pool_start);
MPIU_Free((*win_ptr)->slots);
if (!(*win_ptr)->info_args.no_locks) {
if ((*win_ptr)->lock_entry_pool_start != NULL) {
MPIU_Free((*win_ptr)->lock_entry_pool_start);
}
MPIU_Assert((*win_ptr)->current_lock_data_bytes == 0);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment