From c1f46e052bcd02d1143f23b32aa798e238322fe7 Mon Sep 17 00:00:00 2001 From: "Samuel K. Gutierrez" Date: Sat, 28 Apr 2018 07:21:14 -0600 Subject: [PATCH] Fix HG finalize errors. A big thanks to Chuck Cranor (@chuck) for all his help. Problem: Leaking SSG structures that internally used HG resources: margo_wait_for_finalize called before : ssg_finalize and ssg_group_destroy. --- src/sdsdkv-server.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sdsdkv-server.h b/src/sdsdkv-server.h index 635a02b..fc4a012 100644 --- a/src/sdsdkv-server.h +++ b/src/sdsdkv-server.h @@ -25,6 +25,13 @@ #define SDSDKV_SERVER_VERBOSE +static void +finalize_cb(void *cba) +{ + ssg_finalize(); + ssg_group_destroy(*(ssg_group_id_t *)cba); +} + static void group_update_cb( ssg_membership_update_t update, @@ -156,6 +163,8 @@ struct sdsdkv_server : public personality { ); } #endif + margo_push_finalize_callback(m_mid, finalize_cb, &m_mid); + // margo_wait_for_finalize(m_mid); #ifdef SDSDKV_SERVER_VERBOSE printf( @@ -165,11 +174,10 @@ struct sdsdkv_server : public personality { #endif return SDSDKV_SUCCESS; } + // int close(void) { - ssg_group_destroy(m_gid); - ssg_finalize(); // return SDSDKV_SUCCESS; }