Re: [Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-28 Thread Olaf Hering
Am Tue, 27 Nov 2018 17:19:06 +
schrieb Wei Liu :

> The other option -- to call atexit right after -- looks plausible to me.

After looking through main(), moving the atexit() seems safe to me.

Olaf


pgpYhWjmpbrZl.pgp
Description: Digitale Signatur von OpenPGP
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-27 Thread Wei Liu
On Tue, Nov 27, 2018 at 06:09:33PM +0100, Olaf Hering wrote:
> Am Tue, 27 Nov 2018 16:55:38 +
> schrieb Wei Liu :
> 
> > Looking more closely into this, these lines should be moved even
> > earlier before the call to libxl_ctx_alloc -- there is an exit there.
> 
> Is it required to install the atexit handler before alloc()?
> To me it looks like atexit(xl_ctx_free) should be done right after, or 
> inside, xl_ctx_alloc().

Note that multiple calls to atexit creates a chain of functions to
call, not overriding what is previously registered.

The xl_ctx_alloc function is also called in postfork. I think if you
move atexit call into xl_ctx_alloc you will end up registering
xl_ctx_free more than once, which is wrong.

The other option -- to call atexit right after -- looks plausible to me.

Wei.

> 
> Olaf



___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-27 Thread Olaf Hering
Am Tue, 27 Nov 2018 16:55:38 +
schrieb Wei Liu :

> Looking more closely into this, these lines should be moved even
> earlier before the call to libxl_ctx_alloc -- there is an exit there.

Is it required to install the atexit handler before alloc()?
To me it looks like atexit(xl_ctx_free) should be done right after, or inside, 
xl_ctx_alloc().

Olaf


pgpztdhceiwC0.pgp
Description: Digitale Signatur von OpenPGP
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-27 Thread Wei Liu
On Tue, Nov 27, 2018 at 11:06:08AM +0100, Olaf Hering wrote:
> Every invocation of xl via valgrind will show three leaks.
> Since libxl_bitmap_alloc uses NOGC, the caller has to free the memory
> after use. And since xl_ctx_free might be called before
> parse_global_config, also move the libxl_bitmap_init calls into
> xl_ctx_alloc.
> 
> Signed-off-by: Olaf Hering 
> ---
>  tools/xl/xl.c | 9 ++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/xl/xl.c b/tools/xl/xl.c
> index 7d2142f16f..f5a17cf0d1 100644
> --- a/tools/xl/xl.c
> +++ b/tools/xl/xl.c
> @@ -209,11 +209,8 @@ static void parse_global_config(const char *configfile,
>  if (!xlu_cfg_get_long (config, "max_maptrack_frames", , 0))
>  max_maptrack_frames = l;
>  
> -libxl_bitmap_init(_vm_affinity_mask);
>  libxl_cpu_bitmap_alloc(ctx, _vm_affinity_mask, 0);
> -libxl_bitmap_init(_hvm_affinity_mask);
>  libxl_cpu_bitmap_alloc(ctx, _hvm_affinity_mask, 0);
> -libxl_bitmap_init(_pv_affinity_mask);
>  libxl_cpu_bitmap_alloc(ctx, _pv_affinity_mask, 0);
>  
>  if (!xlu_cfg_get_string (config, "vm.cpumask", , 0))
> @@ -323,11 +320,17 @@ void xl_ctx_alloc(void) {
>  exit(1);
>  }
>  
> +libxl_bitmap_init(_vm_affinity_mask);
> +libxl_bitmap_init(_hvm_affinity_mask);
> +libxl_bitmap_init(_pv_affinity_mask);

Looking more closely into this, these lines should be moved even
earlier before the call to libxl_ctx_alloc -- there is an exit there.

Sorry for not having noticed this earlier before giving my ack. Please
submit v3.

Wei.

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-27 Thread Wei Liu
On Tue, Nov 27, 2018 at 11:06:08AM +0100, Olaf Hering wrote:
> Every invocation of xl via valgrind will show three leaks.
> Since libxl_bitmap_alloc uses NOGC, the caller has to free the memory
> after use. And since xl_ctx_free might be called before
> parse_global_config, also move the libxl_bitmap_init calls into
> xl_ctx_alloc.
> 
> Signed-off-by: Olaf Hering 

Acked-by: Wei Liu 

Thanks for fixing this.

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH v2] xl: free bitmaps on exit

2018-11-27 Thread Olaf Hering
Every invocation of xl via valgrind will show three leaks.
Since libxl_bitmap_alloc uses NOGC, the caller has to free the memory
after use. And since xl_ctx_free might be called before
parse_global_config, also move the libxl_bitmap_init calls into
xl_ctx_alloc.

Signed-off-by: Olaf Hering 
---
 tools/xl/xl.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tools/xl/xl.c b/tools/xl/xl.c
index 7d2142f16f..f5a17cf0d1 100644
--- a/tools/xl/xl.c
+++ b/tools/xl/xl.c
@@ -209,11 +209,8 @@ static void parse_global_config(const char *configfile,
 if (!xlu_cfg_get_long (config, "max_maptrack_frames", , 0))
 max_maptrack_frames = l;
 
-libxl_bitmap_init(_vm_affinity_mask);
 libxl_cpu_bitmap_alloc(ctx, _vm_affinity_mask, 0);
-libxl_bitmap_init(_hvm_affinity_mask);
 libxl_cpu_bitmap_alloc(ctx, _hvm_affinity_mask, 0);
-libxl_bitmap_init(_pv_affinity_mask);
 libxl_cpu_bitmap_alloc(ctx, _pv_affinity_mask, 0);
 
 if (!xlu_cfg_get_string (config, "vm.cpumask", , 0))
@@ -323,11 +320,17 @@ void xl_ctx_alloc(void) {
 exit(1);
 }
 
+libxl_bitmap_init(_vm_affinity_mask);
+libxl_bitmap_init(_hvm_affinity_mask);
+libxl_bitmap_init(_pv_affinity_mask);
 libxl_childproc_setmode(ctx, _hooks, 0);
 }
 
 static void xl_ctx_free(void)
 {
+libxl_bitmap_dispose(_pv_affinity_mask);
+libxl_bitmap_dispose(_hvm_affinity_mask);
+libxl_bitmap_dispose(_vm_affinity_mask);
 if (ctx) {
 libxl_ctx_free(ctx);
 ctx = NULL;

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel