On 2014/1/20 2:17, Serge Hallyn wrote: > In the daemonized case we will fork, so the anonymous container memlock > will not be shared between parent and child.
I'm basically agree with this patch. And I'm also confused about why we need this lxc_container_get in the first place. Seems like it only work for multi-threads cases, not this fork() case, because any writing lxc_container will cause COW, and father's lxc_container_free won't affect child. After a bit dig, I found this is the only place where uses lxc_container_get(there are two more in test code, not necessary), so maybe we can just remove this api till we really need it? Or maybe I'm missing something, hope somebody clear me up. :) > > Please review. > > Signed-off-by: Serge Hallyn <serge.hal...@ubuntu.com> > --- > src/lxc/lxccontainer.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c > index 0bebdff..0e22ccf 100644 > --- a/src/lxc/lxccontainer.c > +++ b/src/lxc/lxccontainer.c > @@ -583,15 +583,11 @@ static bool lxcapi_start(struct lxc_container *c, int > useinit, char * const argv > * while container is running... > */ > if (daemonize) { > - if (!lxc_container_get(c)) > - return false; > lxc_monitord_spawn(c->config_path); > > pid_t pid = fork(); > - if (pid < 0) { > - lxc_container_put(c); > + if (pid < 0) > return false; > - } > if (pid != 0) > return wait_on_daemonized_start(c, pid); > > @@ -632,12 +628,10 @@ reboot: > goto reboot; > } > > - if (daemonize) { > - lxc_container_put(c); Can we leave this put operation here to free lxc_container? Although this is not a really memory leak, but for this process, it still have numthreads = 1 and have no where to minus it. > + if (daemonize) > exit (ret == 0 ? true : false); > - } else { > + else > return (ret == 0 ? true : false); > - } > } > > /* > _______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel