[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: free libxl context, logger and lockfile using atexit handler
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1346932936 -3600 # Node ID 844e10487b91fb4dcb9c6f8be42a9940d95a7119 # Parent 1b6912dc15f39d1455929f605bbbda1a51c06fe5 xl: free libxl context, logger and lockfile using atexit handler xl frequently just calls exit(3), especially on error. Try to clean up some of our global state to make tools like valgrind more useful. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- For 4.3 only. diff -r 1b6912dc15f3 -r 844e10487b91 tools/libxl/xl.c --- a/tools/libxl/xl.c Thu Sep 06 10:44:40 2012 +0100 +++ b/tools/libxl/xl.c Thu Sep 06 13:02:16 2012 +0100 @@ -191,6 +191,22 @@ void xl_ctx_alloc(void) { libxl_childproc_setmode(ctx, &childproc_hooks, 0); } +static void xl_ctx_free(void) +{ + if (ctx) { + libxl_ctx_free(ctx); + ctx = NULL; + } + if (logger) { + xtl_logger_destroy((xentoollog_logger*)logger); + logger = NULL; + } + if (lockfile) { + free(lockfile); + lockfile = NULL; + } +} + int main(int argc, char **argv) { int opt = 0; @@ -229,6 +245,8 @@ int main(int argc, char **argv) logger = xtl_createlogger_stdiostream(stderr, minmsglevel, 0); if (!logger) exit(1); + atexit(xl_ctx_free); + xl_ctx_alloc(); ret = libxl_read_file_contents(ctx, XL_GLOBAL_CONFIG, @@ -274,8 +292,6 @@ int main(int argc, char **argv) } xit: - libxl_ctx_free(ctx); - xtl_logger_destroy((xentoollog_logger*)logger); return ret; } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |