From a681837ba8dc0cb3c6530b3ee2ae943a71565400 Mon Sep 17 00:00:00 2001 From: Nathan Hjelm Date: Tue, 13 Sep 2016 09:23:12 -0600 Subject: [PATCH] btl/tcp: fix double list remove This commit fixes an abort during finalize because pending events were removed from the list twice. References #2030 Signed-off-by: Nathan Hjelm --- opal/mca/btl/tcp/btl_tcp_component.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/opal/mca/btl/tcp/btl_tcp_component.c b/opal/mca/btl/tcp/btl_tcp_component.c index 2173da853e..37e58c2092 100644 --- a/opal/mca/btl/tcp/btl_tcp_component.c +++ b/opal/mca/btl/tcp/btl_tcp_component.c @@ -394,7 +394,7 @@ static int mca_btl_tcp_component_open(void) static int mca_btl_tcp_component_close(void) { - opal_list_item_t *item; + mca_btl_tcp_event_t *event, *next; #if MCA_BTL_TCP_SUPPORT_PROGRESS_THREAD /** @@ -454,8 +454,7 @@ static int mca_btl_tcp_component_close(void) /* remove all pending events. Do not lock the tcp_events list as the event themselves will unregister during the destructor. */ - while( NULL != (item = opal_list_remove_first(&mca_btl_tcp_component.tcp_events)) ) { - mca_btl_tcp_event_t* event = (mca_btl_tcp_event_t*)item; + OPAL_LIST_FOREACH_SAFE(event, next, &mca_btl_tcp_component.tcp_events, mca_btl_tcp_event_t) { opal_event_del(&event->event); OBJ_RELEASE(event); }