[lxc-devel] [PATCH RFC] fix lxc-info printing duplicate lines

Serge Hallyn serge.hallyn at ubuntu.com
Thu Apr 3 23:37:06 UTC 2014


Quoting Dwight Engen (dwight.engen at oracle.com):
> When lxc-info's stdout is not line buffered (ie. "lxc-info -n foo |more")
> the first three lines will be duplicated. This is because c->get_ips()
> comes next and it forks and the child will exit() causing its fds to be
> closed which flushes out its (fork duplicated) stdio buffers. The lines are
> then duplicated when the parent actually gets around to flushing out its
> stdio. This causes problems for programs (such as the lxc-webpanel) which
> are popen()ing lxc-info.
> 
> The fix here isn't necessarily the right one, but does show what the
> problem is. Seems like maybe we should fix this inside of get_ips(), for
> other API callers as well.
> 
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

> ---
>  src/lxc/lxc_info.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/lxc/lxc_info.c b/src/lxc/lxc_info.c
> index 96cb966..24d6f9b 100644
> --- a/src/lxc/lxc_info.c
> +++ b/src/lxc/lxc_info.c
> @@ -313,6 +313,7 @@ static int print_info(const char *name, const char *lxcpath)
>  		}
>  
>  		if (ips) {
> +			fflush(stdout);
>  			char **addresses = c->get_ips(c, NULL, NULL, 0);
>  			if (addresses) {
>  				char *address;
> -- 
> 1.8.5.3
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list